cxxrtl: fix misleading example, caution about race conditions.

Fixes #1944.
This commit is contained in:
whitequark 2020-04-16 16:30:43 +00:00
parent 58e89cd368
commit 9043632dcc
1 changed files with 13 additions and 4 deletions

View File

@ -1640,21 +1640,30 @@ struct CxxrtlBackend : public Backend {
log("\n"); log("\n");
log(" write_cxxrtl [options] [filename]\n"); log(" write_cxxrtl [options] [filename]\n");
log("\n"); log("\n");
log("Write C++ code for simulating the design. The generated code requires a driver;\n"); log("Write C++ code for simulating the design. The generated code requires a driver\n");
log("the following simple driver is provided as an example:\n"); log("that instantiates the design, toggles its clock, and interacts with its ports.\n");
log("\n");
log("The following driver may be used as an example for a design with a single clock\n");
log("driving rising edge triggered flip-flops:\n");
log("\n"); log("\n");
log(" #include \"top.cc\"\n"); log(" #include \"top.cc\"\n");
log("\n"); log("\n");
log(" int main() {\n"); log(" int main() {\n");
log(" cxxrtl_design::p_top top;\n"); log(" cxxrtl_design::p_top top;\n");
log(" while (1) {\n");
log(" top.p_clk.next = value<1> {1u};\n");
log(" top.step();\n"); log(" top.step();\n");
log(" while (1) {\n");
log(" /* user logic */\n");
log(" top.p_clk.next = value<1> {0u};\n"); log(" top.p_clk.next = value<1> {0u};\n");
log(" top.step();\n"); log(" top.step();\n");
log(" top.p_clk.next = value<1> {1u};\n");
log(" top.step();\n");
log(" }\n"); log(" }\n");
log(" }\n"); log(" }\n");
log("\n"); log("\n");
log("Note that CXXRTL simulations, just like the hardware they are simulating, are\n");
log("subject to race conditions. If, in then example above, the user logic would run\n");
log("simultaneously with the rising edge of the clock, the design would malfunction.\n");
log("\n");
log("The following options are supported by this backend:\n"); log("The following options are supported by this backend:\n");
log("\n"); log("\n");
log(" -header\n"); log(" -header\n");