Index: 06_features/simulation/index.html =================================================================== --- 06_features/simulation/index.html (revision 8828) +++ 06_features/simulation/index.html (revision 8829) @@ -126,3 +126,64 @@
TODO + + +
+The test bench mechanism is responsible for selecting parts of the circuit +for simulation. Test benching operatos on project level. It is implemented +using the test_bench project stance and +forge-if/test_bench attribute +in symbols and wirenets to conditionally omit objects that are not part of +the currently selected test bench. + +
+On the user interface, defining named test benches are done using the +File menu, project submenu, project stances submenu; in the +project stances dialog select the test_bench stance and click +Edit... then enter a new test bench name; it is created and saved in +the project config immediately. +
+Grouping object into test benches can be done on the GUI by selecting +the given objects, then Select menu, Change selected objects submenu, Testbench +affiliation submenu. This opens the test bench quick edit dialog which +presents a matrix of checkboxes for all selected symbols vs. all +project stances available at the time of opening the window. Ticking a checkbox +means the given object is part of the given test bench. +
+After filling in the matrix for a few symbols, changing the test bench stance +in the project stances dialog will expose the mechanism: +
+The project stance test_bench is part of the config tree: /stances/test_bench +is a string containign the name of the currently activated test bench; +/stances/test_bench_values is an array of all known test bench names. These +shall be set on the project role (so they are part of the project file). The +GUI expects and edits them on the project role. +
+Symbol test bench affiliation is controlled by the symbol attribute +forge-if/test_bench. +It could be an arbitrary forge script, but the GUI expects a script +in the following structure: +
+(stance.test_bench != "") && (stance.test_bench != "foo") && (stance.test_bench != "bar") +scalar,omit +sub,^.*$,yes,omit ++
+For the GUI to understand, the expression in the first line must: +