Skip to content

Commit b5294c3

Browse files
committed
Adding README for padring generator
1 parent 8cf49bb commit b5294c3

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

lambdalib/padring/README.md

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# PADRING GENERATOR
2+
3+
## Introduction
4+
5+
The lamdbdalib `padring` library is an automated "pure verilog" padring generator with support for cells within the [IOLIB](../../iolib/README.md) io cell library.
6+
7+
## PARAMETERS
8+
9+
### {NO,EA,WE,SO}NCELLS
10+
Specifies the total number of placed cells within one side of the padring, includig supply and clamp cells.
11+
12+
### {NO,EA,WE,SO}NPINS
13+
Specifies the total number of logical device pins (pads) connected to one side of the padring, not including supply pins. The `CELLMAP` parameter specifies which one of the pins should be connected to a cell.
14+
15+
### {NO,EA,WE,SO}NSECTIONS
16+
Specifies the total number of power sections within one side of the padring. The `CELLMAP` parameter specifies which one of the power sections should be connected to a cell.
17+
18+
### {NO,EA,WE,SO}CELLMAP
19+
Specifies the type of cells, pin connections, properties, and power connections of all cells in the padring with the exception of filler cells. The physical placement of the cells within the padring shall be done in the order dictated by `CELLMAP`. The CELLMAP is a vector of size NCELLS * 40, with the 40bit vector split into the following fields:
20+
21+
* CELLMAP[7:0] = pin number connected to cell
22+
* CELLMAP[15:8] = pin number for complementary pad for differential cells
23+
* CELLMAP[23:16] = cell type (see ./la_padring.vh)
24+
* SECTION[31:24] = padring power section number connected to cell
25+
* PROP[39:32] = property passed to technology specific iolib implementation
26+
27+
### CFGW
28+
Specifies the width of the configuration bus of the io cell. For a description of uses of `CFGW`, see [IOLIB](../../iolib/README.md).
29+
30+
#### RINGW
31+
The `RINGW` parameter specifies the number of signals within the power bus that connects all of the io cells together within the padring.
32+
33+
34+
## Using the Generator
35+
36+
To use the generator, you will need to:
37+
1. Instantiate the module in your design.
38+
2. Pass in a set of parameters to configure the cells within the padring.
39+
40+
The full example can be found in the `tb` module placed at the end of the [la_iopadring](rtl/la_iopadring.v) module. To run the small testbench, just execute:
41+
42+
```sh
43+
iverilog la_iopadring.v -DTB_LA_IOPADRING -y . -y ../../iolib/rtl
44+
./a.out
45+
```
46+
47+
The following excerpt from the testbench illustrate the use of the `CELLMAP`, `NPINS`, and `NCELLS` parameters.
48+
49+
```verilog
50+
51+
52+
// Setting up your parameters
53+
54+
localparam CFGW = 8;
55+
localparam RINGW = 8;
56+
localparam NPINS = 4;
57+
localparam NCELLS = 8;
58+
localparam NSECTIONS = 1;
59+
60+
// pinmap
61+
localparam [7:0] PIN_IO0 = 8'h00;
62+
localparam [7:0] PIN_AN0 = 8'h01;
63+
localparam [7:0] PIN_RXP = 8'h02;
64+
localparam [7:0] PIN_RXN = 8'h03;
65+
66+
localparam NULL = 8'h0;
67+
68+
localparam CELLMAP = {{NULL, NULL, LA_VSS, NULL, NULL},
69+
{NULL, NULL, LA_BIDIR, NULL, PIN_IO0},
70+
{NULL, NULL, LA_ANALOG, NULL, PIN_AN0},
71+
{NULL, NULL, LA_VDDIO, NULL, NULL},
72+
{NULL, NULL, LA_RXDIFF, PIN_RXN, PIN_RXP},
73+
{NULL, NULL, LA_VSS, NULL, NULL},
74+
{NULL, NULL, LA_VSS, NULL, NULL},
75+
{NULL, NULL, LA_VSS, NULL, NULL}};
76+
77+
// Instantiating the padring in your design
78+
la_iopadring #(.CFGW(CFGW),
79+
.RINGW(RINGW),
80+
.NO_NPINS(NPINS),
81+
.EA_NPINS(NPINS),
82+
.WE_NPINS(NPINS),
83+
.SO_NPINS(NPINS),
84+
.NO_NCELLS(NCELLS),
85+
.EA_NCELLS(NCELLS),
86+
.WE_NCELLS(NCELLS),
87+
.SO_NCELLS(NCELLS),
88+
.NO_CELLMAP(CELLMAP),
89+
.EA_CELLMAP(CELLMAP),
90+
.WE_CELLMAP(CELLMAP),
91+
.SO_CELLMAP(CELLMAP))
92+
la_iopadring(...)
93+
94+
95+
96+
```
97+

0 commit comments

Comments
 (0)