Designers of modern large System-On-A-Chip designs use Verieda to manage the configuration and status register interfaces in their designs, because they need to concentrate on high level objectives such as system level performance.
Verieda is a register set design tool. It takes a high level description of the memory-mapped registers for a hardware block, such as:
| Register | Width | Address | location in address | type |
|---|---|---|---|---|
| register1 | 15 | 0 | 14:0 | Read Only |
| register2 | 16 | 0 | 31:61 | Read Write |
| register3 | 24 | 1 | 23:0 | Read Write |
and generates
- A high performance RTL implementation
- Documentation
- A set of C access macros
This is better than writing it by hand because:
- It saves time
- Everything stays synchronised
- You have more important problems to solve
You need easy firmware access
If the firmware is written separately, it can be instructive to provide examples that demonstrate how to initialise and control the block. When it is this easy, why not?
/* Example packet engine initialisation. See XYZ.doc for more information. */ #include "pkt_registers.h" #include "system.h" char buffer[1024]; int main() { /* Always perform a synchronous reset first */ pkt_reset_wr(PKTPROC_BASE,1); /* Wait until the engine is ready */ while(pkt_ready_rd(PKTPROC_BASE) == 0) { } /* Set the base address */ pkt_base_addr_wr(PKTPROC_BASE, buffer); /* begin */ pkt_enable_wr(PKTPROC_BASE, 1); }
Any HDL designer worth their salt could happily implement this given time on the project plan, but because Verieda makes this always available there is no reason not to use it.
Better tools, rapid iteration
All designs see features added during development, and it is common for extra bits to be added into existing registers. For example, someone may be working on our previous example:
Then add an extra one bit read-write register in the unused space between existing registers
This shouldn't be a problem, except all updates to register2 now need a read-modify-write operation. Even finding all the places that need changing will be hard—what would you search for? Worst of all, any place that it is missed becomes a strange bug where a register suddenly clears itself for no reason.
With Verieda the same task is as simple as just adding the new register and downloading the new version.
As anyone who has wished for a faster 'scope will know, it is possible to work without the latest tools, but that doesn't mean you should work without them. Start using Verieda to manage your register interfaces by signing up now.
