remove timestamp
[crowdsupply.git] / updates / 023_2020mar26_decoder_emulator_started.mdwn
index a7c04764115c15fc29d2cd2c7f7b678c3a2481ba..4c6d08a7211a4d13bc787a98e97f7b441b38e81a 100644 (file)
@@ -70,7 +70,7 @@ Here's the summary (if it can be called a summary):
 Well dang, as you can see, suddenly it just went ballistic.  There's
 almost certainly things left off the list.  For such a small team there's
 a heck of a lot going on.  We have an awful lot to do, in a short amount
-of time: the 180nm tape-out is in October 2020 - only 7 months away.
+of time: the 180nm tape-out is in October 2020.
 
 With this update we're doing something slightly different: a request
 has gone out [to the other team members](http://lists.libre-riscv.org/pipermail/libre-riscv-dev/2020-March/005428.html)
@@ -189,8 +189,8 @@ fields from an instruction.
 To test the decoder, we initially verified it against the tables we
 extracted, and manually against the [POWER ISA
 specification](https://openpowerfoundation.org/?resource_lib=power-isa-version-3-0). Later
-however, we came up with the idea of [verifying the
-decoder](https://git.libre-riscv.org/?p=soc.git;a=blob;f=src/soc/decoder/test/test_decoder_gas.py;h=9238d3878d964907c5569a3468d6895effb7dc02;hb=433ab59cf9b7ab1ae10754798fc1c110e705db76)
+however, we came up with the idea of
+[verifying the decoder](https://git.libre-riscv.org/?p=soc.git;a=blob;f=src/soc/decoder/test/test_decoder_gas.py;h=9238d3878d964907c5569a3468d6895effb7dc02;hb=433ab59cf9b7ab1ae10754798fc1c110e705db76)
 against the output of the GNU assembler. This is done by selecting an
 instruction type (integer reg/reg, integer immediate, load store,
 etc), and randomly selecting the opcode, registers, immediates, and
@@ -209,8 +209,8 @@ QEMU. We would then simulate our SOC until it was finished executing
 instructions, and use Qemu's gdb interface to do the same. We would
 then use Qemu's gdb interface to compare the register file and memory
 with that of our SOC to verify that it is working correctly. I did
-some experimentation using this technique to verify a [rudimentary
-simulator](https://git.libre-riscv.org/?p=soc.git;a=blob;f=src/soc/simulator/test_sim.py;h=aadaf667eff7317b1aa514993cd82b9abedf1047;hb=433ab59cf9b7ab1ae10754798fc1c110e705db76)
+some experimentation using this technique to verify a
+[rudimentary simulator](https://git.libre-riscv.org/?p=soc.git;a=blob;f=src/soc/simulator/test_sim.py;h=aadaf667eff7317b1aa514993cd82b9abedf1047;hb=433ab59cf9b7ab1ae10754798fc1c110e705db76)
 of the SOC backend, and it seemed to work quite well.
 
 *(Note from Luke: this automated approach, taking either other people's
@@ -220,6 +220,8 @@ correct and does not contain transcription errors).*
 
 # simple-soft-float Library and POWER FP emulation
 
+(*written kindly by Jacob*)
+
 The [simple-soft-float](https://salsa.debian.org/Kazan-team/simple-soft-float)
 library is a floating-point library Jacob wrote with the intention
 of being a reference implementation of IEEE 754 for hardware testing
@@ -282,6 +284,9 @@ sponsorship, from individuals, Foundations (such as NLNet) and Companies
 
 # Kazan Getting a New Shader Compiler IR
 
+(*written kindly by Jacob, a dedicated update on Kazan will definitely
+feature in the future*)
+
 After spending several weeks only to discover that translating directly from
 SPIR-V to LLVM IR, Vectorizing, and all the other front-end stuff all in a
 single step is not really feasible, Jacob has switched to [creating a new
@@ -301,18 +306,22 @@ The IR uses structured control-flow inspired by WebAssembly's control-flow
 constructs as well as
 [SSA](https://en.wikipedia.org/wiki/Static_single_assignment_form) but, instead
 of using traditional phi instructions, it uses block and loop parameters and
-return values (inspired by [Cranelift's EBB
-parameters](https://github.com/bytecodealliance/wasmtime/blob/master/cranelift/docs/ir.md#static-single-assignment-form)
-as well as both of the [Rust](https://www.rust-lang.org/) and [Lua](https://www.lua.org/) programming languages).
+return values (inspired by
+[Cranelift's EBB parameters](https://github.com/bytecodealliance/wasmtime/blob/master/cranelift/docs/ir.md#static-single-assignment-form)
+as well as both of the [Rust](https://www.rust-lang.org/) and
+[Lua](https://www.lua.org/) programming languages).
 
-The IR has a single pointer type for all data pointers (`data_ptr`), unlike LLVM IR where pointer types have a type they point to (like `* i32`, where `i32` is the type the pointer points to).
+The IR has a single pointer type for all data pointers (`data_ptr`),
+unlike LLVM IR where pointer types have a type they point to (like `*
+i32`, where `i32` is the type the pointer points to).
 
-Because having a serialized form of the IR is important for any good IR, like
-LLVM IR, it has a user-friendly textual form that can be both read and
-written without losing any information (assuming the IR is valid, comments are
-ignored). A binary form may be added later.
+Because having a serialized form of the IR is important for any good IR,
+like LLVM IR, it has a user-friendly textual form that can be both read
+and written without losing any information (assuming the IR is valid,
+comments are ignored). A binary form may be added later.
 
-Some example IR is [available in the Kazan repo](https://salsa.debian.org/Kazan-team/kazan/-/blob/master/docs/Shader%20Compiler%20IR%20Example.md).
+Some example IR is
+[available in the Kazan repo](https://salsa.debian.org/Kazan-team/kazan/-/blob/master/docs/Shader%20Compiler%20IR%20Example.md).
 
 # OpenPOWER Conference calls
 
@@ -447,12 +456,12 @@ So, as I mentioned
 USD $25,000, we're happy with USD $10 million.  It's really up to you guys,
 at Epic Games, as to what level you'd like to see us get to, and how fast.
 
-USD $600,000 for example we can instead of paying USD $1million to a proprietary
-company to license a DDR3 PHY for a limited one-time use and only a 32-bit
-wide interface, we can contract SymbioticEDA to *design* a DDR3 PHY for us,
-which both we *and the rest of the worldwide Silicon Community can use
-without limitation* because we will ask SymbioticEDA to make the design
-(and layout) libre-licensed, for anyone to use.
+USD $600,000 for example we can instead of paying USD $1million to a
+proprietary company to license a DDR3 PHY for a limited one-time use and
+only a 32-bit wide interface, we can contract SymbioticEDA to *design*
+a DDR3 PHY for us, which both we *and the rest of the worldwide Silicon
+Community can use without limitation* because we will ask SymbioticEDA
+to make the design (and layout) libre-licensed, for anyone to use.
 
 USD 250,000 pays for the mask charges that will allow us to do the 40nm
 quad-core ASIC that we have on the roadmap for the second chip. USD
@@ -481,7 +490,8 @@ required between five (minimum) and *ninteen* separate and distinct tasks,
 a call with Michiel and Joost turned into an unexpected three hour online
 marathon, scrambling to write almost fifty bugreports as part of the Schedule
 to be attached to each Memorandum of Understanding.  The mailing list
-got a [leeetle bit busy](http://lists.libre-riscv.org/pipermail/libre-riscv-dev/2020-March/005003.html)
+got a
+[leeetle bit busy](http://lists.libre-riscv.org/pipermail/libre-riscv-dev/2020-March/005003.html)
 right around here.
 
 Which emphasised for us the important need to subdivide the mailing list into
@@ -669,54 +679,49 @@ parser which read the packet formats *from the IETF Draft Specification*,
 and outputted c-code.
 
 This leaves me wondering, as I mention on the HDL list, if we can do the same
-thing with large sections of the POWER Spec.
+thing with large sections of the POWER Spec (*answer as of 3rd April 2020:
+[yes](https://git.libre-riscv.org/?p=soc.git;a=blob;f=src/soc/decoder/power_pseudo.py;h=f2e575e8c5b707e7ec2f8d2ea6ca6d36060e08ad;hb=af3c6727c8bb59623bf5672b867407b5516e8338)*)
 
 # Build Servers, Process Automation, and Reducing Cognitive Load
 
-Over the past month, Jacob, and a new project member Cole, set up a new build
-server for the project. The build server is an old computer that Jacob wasn't
-using anymore, that he decided to make available to the project for running
-continuous integration (CI) testing for the many modules and submodules of
-the project. The build server is a gitlab test runner instance using a Docker
-backend. As Luke has taken pains to make clear many times, very large and
-complex python projects are guaranteed to fail without proper, extensive test
-coverage. This new build server will allow us to automate the running,
-monitoring, and reporting of these tests, giving us the ability to push a
-commit and have it automatically "verified" as cohesive with the existing
-codebase. Automating feedback, will help provide more confidence 
-to the engineers that their code isn't breaking some other functionality in
-a codebase they are working on, and should also help improve the ease of 
-long-term maintainability of the code. The more we can automate the menial 
-tasks that have to be repeated frequently, and are important for success of 
-the project but are not related to progressing the engineering of the Libre-SOC,
+(*written kindly by Cole*)
+
+Over the past month, Jacob, and a new project member Cole, set up a new
+build server for the project. The build server is an old computer that
+Jacob wasn't using anymore, that he decided to make available to the
+project for running continuous integration (CI) testing for the many
+modules and submodules of the project. The build server is a gitlab test
+runner instance using a Docker backend. As Luke has taken pains to make
+clear
+[many times](https://libre-riscv.org/HDL_workflow/),
+very large and complex python projects are guaranteed
+to fail without proper, extensive test coverage. This new build server
+will allow us to
+[automate](http://lists.libre-riscv.org/pipermail/libre-riscv-dev/2020-April/005687.html)
+the running, monitoring, and reporting of these
+tests, giving us the ability to push a commit and have it automatically
+"verified" as cohesive with the existing codebase. Automating feedback,
+will help provide more confidence to the engineers that their code isn't
+breaking some other functionality in a codebase they are working on,
+and should also help improve the ease of long-term maintainability
+of the code. The more we can automate the menial tasks that have to
+be repeated frequently, and are important for success of the project
+but are not related to progressing the engineering of the Libre-SOC,
 the more productive project members can be.
 
-While we are in the early stages of the CI testing integration into our project 
-workflows, eventually Jacob should be able to simply push a commit on his Kazan 
-SPIR-V to LLVM-IR compiler, and continue working, automatically recieving 
-feedback on how well his new code integrates with his existing code. As a 
-result he can be more confident in his code-quality and also work a bit faster 
-because he no longer needs to take time out of his workflow to run the tests. 
-More significant than this however, is that the automation of continuous 
-integration testing significantly diminishes the probability that the project 
-will get out of sync, or become cluttered with erroneous test failures, 
-obscuring the clarity with which a project developer can view the codebase. 
-Automating this kind of more "administrative" work, reduces the overall 
-cognitive load on the project developers allowing them to allocate 
-proportionally more attention to the primary engineering aspects of the project.
-
-To help continue to ease such administrative burdens on the engineers, Cole is
-working on a repository of setup automation scripts. The first script is one
-that will replicate the setup of Jacob's build server, so that others who want
-to contribute computational resources to the project may do so easily. Cole is
-also working on a collection of modular scripts to automate the setup of the 
-development environment for the HDL workflow and the layout of the SOC, 
-including the installation of development branches of a substainal number of 
-very complex pieces of software. This should help ease the process of
-onboarding new members to the project, especially some interns that we have
-coming onboard in the next few months to do the layout of the chip. These
-scripts will be available via the git.libre-riscv.org repository dev-env-setup,
-at the following link **TODO ADD LINK TO REPO**.
+To help continue to ease such administrative burdens on the engineers,
+Cole is also working on a repository of setup automation scripts. The first
+script is one that will replicate the setup of Jacob's build server,
+so that others who want to contribute computational resources to the
+project may do so easily. Cole is also working on a collection of modular
+scripts to automate the setup of the development environment for the
+HDL workflow and the layout of the SOC, including the installation of
+development branches of a substainal number of very complex pieces of
+software. This should help ease the process of onboarding new members
+to the project, especially some interns that we have coming onboard in
+the next few months to do the layout of the chip. These scripts will be
+available via the git.libre-riscv.org repository dev-env-setup, at the
+[following link](http://git.libre-riscv.org/?p=dev-env-setup.git)
 
 # Conclusion
 
@@ -729,9 +734,11 @@ world-wide travel shut-down, and for people - the world over - to return to
 local community roots.
 
 However what I definitely wasn't expecting was a United States President
-to be voted in who was eager and, frankly, stupid enough, to start *and
-escalate* a Trade war with China.  The impact on the U.S economy alone, and the
-reputation of the whole country, has been detrimental in the extreme.
+to be voted in who was eager and willing to start *and escalate* a Trade
+war with China, even during the current world climate where both local
+and global collaboration, **not** competition, is more important than
+ever before.  The impact of his decisions on the U.S economy alone, and
+the reputation of the whole country, has been detrimental in the extreme.
 
 This combination leaves us - world-wide - with the strong possibility that
 seemed so "preposterous" that I could in no way discuss it widely, let alone