From b8aaebb8a634bcff2cdca7dc47bfce2f320a1ff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Boh=C3=A1=C4=8Dek?= Date: Sat, 2 Sep 2023 16:11:44 +0200 Subject: [PATCH] docs: add simple documentation README --- README.md | 81 ++++++++++++++++++++++++++++++++ img/gtkwave_spi_slave_w_tcl.png | Bin 0 -> 42025 bytes 2 files changed, 81 insertions(+) create mode 100644 README.md create mode 100644 img/gtkwave_spi_slave_w_tcl.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..2072787 --- /dev/null +++ b/README.md @@ -0,0 +1,81 @@ +# Gktwave TCL generator +This is a simple generator of tcl files that may be used along with gtkwave. +The generator generates tcl according to a testbench file, with rules that may be +specified inside of comments. + +## Usage (vhdl code) +Signals are parsed one by one, their order is respected. They may be omitted using the `omit`. + +Comments inside of architecture declaration (between `is` and `begin` keywords) +will be parsed. Standalone comments update the current context, this may be useful +to specify color of multiple signals that will follow. +To reset the color, format to default, use the `reset`. + +Comments that are associated with a signal (the comment is at the same line as the semicolon), +are treated as associated with the given signal (or signals if the declaration declares multiple +signals). +These do not update the current context. + +## Usage (cli) + +The generator works as a cli. Folder with the testbenches, name of the testbench, +and output tcl file must be specified for proper operation. + +``` +Usage: gtkwave_tcl_generator --folder --testbench --output + +Options: + -f, --folder + -t, --testbench + -o, --output + -h, --help Print help + -V, --version Print version +``` + +## Supported comment 'keywords' +| token | values | description | +|------------|-----------------------------------------------------------------|----------------------------------------------------------------------| +| reset | None | Reset current context. | +| omit | None | Omit the signals (not respected for "add signal"). | +| color | normal, red, orange, yellow, green, blue, indigo, violet, cycle | Sets the color of the signal. | +| format | hex, decimal signed decimal, binary | Sets the display format. | +| add signal | path to the signal | Adds the given signal, use dot notation. Separate options with comma | +|------------|-----------------------------------------------------------------|----------------------------------------------------------------------| + +# Example usage + +This is architecture declaration for a testbench of `spi_slave` component. +``` vhdl +architecture tb of tb_spi_slave is + -- color indigo + signal clk : std_logic := '0'; + signal rst : std_logic := '0'; + + -- color green + signal tx_valid, tx_ready, tx_transmitting : std_logic; + signal tx_data : std_logic_vector(7 downto 0); + + -- color orange + signal rx_valid : std_logic; + signal rx_data : std_logic_vector(7 downto 0); + -- reset + + signal gated_si : std_logic; + signal so : std_logic; + signal cs_n : std_logic := '1'; + + -- omit + signal loopback : std_logic := '0'; + signal si : std_logic := '0'; + + -- add signal uut.tx.data_bit_index_reg + -- add signal uut.rx.bit_index_reg +begin -- architecture tb +``` + +To generate a tcl, use: `gtkwave_tcl_generator --folder testbenches --testbench tb_spi_slave --output spi_slave.tcl`. +This will generate a tcl script. This script will add all of the signals that are not omitted using `omit`, +with the colors specified. + +The result inside of gtkwave: +![Gtkwave tb_spi_slave with generated tcl loaded](img/gtkwave_spi_slave_w_tcl.png) diff --git a/img/gtkwave_spi_slave_w_tcl.png b/img/gtkwave_spi_slave_w_tcl.png new file mode 100644 index 0000000000000000000000000000000000000000..3d835dee3aa02df397b7f28bde158cebfeeced08 GIT binary patch literal 42025 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 literal 0 HcmV?d00001 -- 2.48.1