TL-Verilog
Redwood EDA fully embraces and actively contributes to the emerging Transaction-Level Verilog (TL-Verilog) standard. We believe transaction-level design has the potential to be the most impactful methodological advancement this industry has seen in decades.
Top 10 reasons why we’ve gone all-in on TL-Verilog:
10.
A next-generation ASIC should not take a team of 300 four years to create.
9.
FPGA-based innovation is inhibited by modeling complexity.
8.
Using C++ to design silicon is absurd.
7.
While abstraction is necessary, designers also need gate-level control.
6.
The benefits extend beyond logic design to arch., verif., impl., and post-Si.
5.
TL-Verilog is a zero-overhead enhancement, not a disruptive substitution.
4.
½ the code means ½ the bugs.
3.
TL-Verilog was envisioned with reuse and SoC/IP design in mind.
2.
Engineers and students can learn TL-Verilog in a matter of hours.
1.
Logic design should be fun!
Simple
You'll never again get tripped up by
-
blocking vs. non-blocking assignments
-
packed vs. unpacked datatypes
-
generate blocks
-
always blocks
-
sensitivity lists
-
reg vs. wire vs. logic vs. bit
Powerful
-
Pipelines, transactions, and state are fundamental constructs.
-
High-level models can be composed quickly and RTL details can be filled in over time.
-
TL-Verilog is good for architectural and synthesizable verification models. too.
Flexible
-
Cycle-level details live "below the surface" of the behavioral model. This enables RTL changes to be made without bugs and without impacting verification models.
-
The same IP can be utilized under a wide variety of design constraints.
TL-Verilog Specification
TL-X (TL-Verilog, TL-VHDL, TL-C, etc.) language specs are available at tl-x.org. These twelve or so pages will simplify your life like you never thought possible.
With these TL-Verilog constructs, half of the content in your shelf of Verilog/SystemVerilog books and manuals becomes obsolete.
-
Combinational and Sequential Logic: $signals and expressions
-
Pipelines: |pipelines and @stages
-
Validity: ?$valid
-
Pipeline interactions: >>alignment
-
Hierarchy: /hierarchy
-
State: $State
-
Transaction Flows: $ANY
-
File Structure: \SV, \SV_plus, \TLV, \TLV_version
Smaller is better
Less code means faster development, fewer bugs, easier maintenance, and better quality silicon. Here are some examples you can find in Makerchip.
Basic Logic Example
Cellular Automation: Conway's Game of Life Simulation Circuit
(AKA, this in hardware)
SystemVerilog
TL-Verilog
Transaction-Level Design Example
Calculation in a Backpressured Pipeline
SystemVerilog
TL-Verilog
Flexible IP Example
WARP-V CPU Core Generator
This WARP-V source code...
TL-Verilog
SystemVerilog
Microcontroller
...
...generates these and more.
SystemVerilog
4-stage Core
SystemVerilog
6-stage Core
A Quick Taste
Below is a pipelined computation of distance ('c') using the Pythagorean Theorem.
In TL-Verilog, this logic can be expressed as:
The code above is also shown in the lower-left panel below. From it, SandPiper can generate SystemVerilog (or Verilog) code (shown in the right-hand panels) in a variety of coding styles. dist.sv (lower-right) contains logic translated line-for-line from dist.tlv. dist_gen.sv (upper-right) contains:
-
signal declarations
-
staging flip-flops
-
clock gating logic (power savings)
These are correct-by-construction, so dist.sv, which is a direct translation of the source code, is the focus of debug. This means you, in essence, debug the source code, which, in this example, is about 1/6 the size of the SystemVerilog code.
The "Code Comparison" chart below shows statistics on the TL-Verilog and SystemVerilog code shown in the other three panels. Click to explore this in its own window.
Try It!