update GUIDELINES.md

This commit is contained in:
Peter McGoron 2022-11-17 18:39:48 -05:00
parent 82ff659a44
commit d9f4a40c6d
1 changed files with 6 additions and 5 deletions

View File

@ -10,14 +10,15 @@ See also [Dan Gisselquist][1]'s rules for FPGA development.
synthesizes it incorrectly. synthesizes it incorrectly.
* Do not use parameters that are calculated from other parameters (yosys * Do not use parameters that are calculated from other parameters (yosys
will not parse them correctly). Use macros instead. will not parse them correctly). Use macros instead.
* Simulate *every* module, even the trivial ones using Verilator. Do not * Simulate *every* module, even the trivial ones using Verilator.
write tests in Verilog. Put test code in the same directory as the Simulation must be simulatable with open-source software (Verilator is
Verilog module, unless the Verilog module is external. preferred, but Icarus Verilog and similar are fine). Put test code in the same
directory as the Verilog module, unless the Verilog module is external.
* Synthesize and verify large modules independently on hardware using * Synthesize and verify large modules independently on hardware using
the LiteX SoC generator. Put the generator source code (along with the LiteX SoC generator. Put the generator source code (along with
the hardware test driver) in the repository. the hardware test driver) in the repository.
* Write *only* synthesizable verilog (except for test shims, like commands * Write *only* synthesizable verilog (except for direct test-bench code), even
to dump a trace), even for modules that will not be synthesized. for modules that will not be synthesized.
* Dump traces using `.fst` format. * Dump traces using `.fst` format.
* Use only one clock. * Use only one clock.
* Only transition on the *positive edge* of the *system clock*. * Only transition on the *positive edge* of the *system clock*.