Index: trunk/doc/user/06_features/simulation/index.html =================================================================== --- trunk/doc/user/06_features/simulation/index.html (revision 8828) +++ trunk/doc/user/06_features/simulation/index.html (revision 8829) @@ -126,3 +126,64 @@

Low level simulation

TODO + + +

Test benching

+

+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. + +

Test benching using the GUI

+

+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: +

+ +

Test benching in the config

+

+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: +