-
Notifications
You must be signed in to change notification settings - Fork 5
Padring generator upgrade #63
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Changes from all commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
eee931c
Cleaning up iolib documentation/parameteres (wip)
aolofsson 6a36e0a
Adding iolib README
aolofsson 6b212ea
Cleanin up iopadring CELLMAP (wip)
aolofsson db4ddf0
Changing TYPE to PROP
aolofsson 1719212
README cleanup
aolofsson cd28511
Finalizing code cleanup in padring
aolofsson 3a0382e
Improving generate naming
aolofsson 8cf49bb
Removing stale padring testbench, not situated inside module
aolofsson b5294c3
Adding README for padring generator
aolofsson b4dcf77
Making NULL 0
aolofsson f53b962
Updating docs based on review
aolofsson ce7aff3
Readme update
aolofsson 373ef46
Addding WARNING in alias/short modules
aolofsson 8a5ea17
Moving alias module to padring
aolofsson File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
# IOLIB | ||
|
||
## Cell Listing | ||
|
||
| Cell | Type | Description | | ||
| ---------------------------------|---------|-----------------------------| | ||
[[la_iobidir](./rtl/la_iobidir.v) | Digital | Bidirectional | ||
[la_ioinput](./rtl/la_ioinput.v) | Digital | Input | ||
[la_ioxtal](./rtl/la_ioxtal.v) | Digital | Xtal tranceiver | ||
[la_iorxdiff](./rtl/la_iorxdiff.v) | Digital | Differential input | ||
[la_iotxdiff](./rtl/la_iotxdiff.v) | Digital | Differential output | ||
[la_ioanalog](./rtl/la_ioanalog.v) | Analog | Pass through ESD protection | ||
[la_iovdd](./rtl/la_iovdd.v) | Supply | Core power | ||
[la_iovss](./rtl/la_iovss.v) | Supply | Core ground | ||
[la_iovddio](./rtl/la_iovddio.v) | Supply | IO power | ||
[la_iovssio](./rtl/la_iovssio.v) | Supply | IO ground | ||
[la_iovdda](./rtl/la_iovdda.v) | Supply | Analog power | ||
[la_iovssa](./rtl/la_iovssa.v) | Supply | Analog ground | ||
[la_iopoc](./rtl/la_iopoc.v) | Supply | Power on control | ||
[la_iocorner](./rtl/la_iocorner.v) | Supply | Corner connector | ||
[la_ioclamp](./rtl/la_ioclamp.v) | Supply | ESD clamp | ||
[la_iocut](./rtl/la_iocut.v) | Supply | Power ring cutter | ||
|
||
## PARAMETERS | ||
|
||
### CFGW | ||
The `CFGW` parameter defines the width of the configuration bus of the io cell. IO cells generally include a set of configuration inputs for things like drive strength and operating modes. Setting `CFGW` to a large value (eg. 16/32) should have zero impact on the design as the extra bus bits get optimized away during implementation. The connection between the generic `CFG` bus and the technology specific IO cell is done within the techology specific cell wrapper library. | ||
|
||
For la_bidir, the first 8 bits of the configuration bus are reserved for the functionality shown in the table below. | ||
|
||
| Bit | Description | | ||
|-----------|-------------------------------------------------| | ||
CFG[0] | slew rate control (0=fast, 1 =slow) | | ||
CFG[1] | schmitt trigger select (0=CMOS, 1=schmitt) | | ||
CFG[2] | pull enable (0=no pull, 1=enables weak pull) | | ||
CFG[3] | pull select (1=pull up, 0=pull down) | | ||
CFG[7:4] | drive strength | | ||
|
||
#### RINGW | ||
The `RINGW` parameter specifies the number of signals within the power bus that connects all of the io cells together within the padring. | ||
|
||
### SIDE | ||
The `SIDE` parameter indicates the placement of a cell instances within a padring.Legal values for `SIDE` are: "NO" (north/top), "EA" (east/right), "WE" (west/left), "SO" (south/bottom). The parameter can be used by the technology specific implementation of `iolib` to selec the native orientation of the cell. Modern process nodes place restrictions on the orientation of transistors and include vertical and horizontal version of all active io cells. | ||
|
||
### PROP | ||
The `PROP` parameter can be used by the technology specific `iolib` implementation to select between different variants of the `iolib` cell type. The `PROP` parameter is library specific and should only be used when absolutely necessary. Using this parameter means technology/ip information permeates up through the design (nullifying the benefits of lambdalib). | ||
|
||
## Cell Description | ||
|
||
## la_iobidir | ||
|
||
## la_ioinput | ||
|
||
## la_ioxtal | ||
|
||
## la_iorxdif | ||
|
||
## la_iotxdiff | ||
|
||
## la_ioanalog | ||
|
||
## la_iovdd | ||
|
||
## la_iovss | ||
|
||
## la_iovddio | ||
|
||
## la_iovssio | ||
|
||
## la_iovdda | ||
|
||
## la_iovssa | ||
|
||
## la_iopoc | ||
|
||
## la_iocorner | ||
|
||
## la_ioclamp | ||
|
||
## la_iocut |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,25 @@ | ||
/***************************************************************************** | ||
* Function: IO ESD clamp cell | ||
* Function: ESD Clamp IO cell | ||
* Copyright: Lambda Project Authors. All rights Reserved. | ||
* License: MIT (see LICENSE file in Lambda repository) | ||
* | ||
* Docs: | ||
* | ||
* ../README.md | ||
* | ||
****************************************************************************/ | ||
module la_ioclamp #( | ||
parameter TYPE = "DEFAULT", // cell type | ||
parameter SIDE = "NO", // "NO", "SO", "EA", "WE" | ||
parameter RINGW = 8 // width of io ring | ||
) ( // io pad signals | ||
inout vdd, // core supply | ||
inout vss, // core ground | ||
inout vddio, // io supply | ||
inout vssio, // io ground | ||
inout [RINGW-1:0] ioring // generic io-ring interface | ||
); | ||
module la_ioclamp | ||
#( | ||
parameter PROP = "DEFAULT", // cell property | ||
parameter SIDE = "NO", // "NO", "SO", "EA", "WE" | ||
parameter RINGW = 8 // width of io ring | ||
) | ||
(// io pad signals | ||
inout vdd, // core supply | ||
inout vss, // core ground | ||
inout vddio, // io supply | ||
inout vssio, // io ground | ||
inout [RINGW-1:0] ioring // generic io ring interface | ||
); | ||
|
||
endmodule |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,25 @@ | ||
/***************************************************************************** | ||
* Function: IO corner cell | ||
* Function: Corner IO Cell | ||
* Copyright: Lambda Project Authors. All rights Reserved. | ||
* License: MIT (see LICENSE file in Lambda repository) | ||
* | ||
* Docs: | ||
* | ||
* ../README.md | ||
* | ||
****************************************************************************/ | ||
module la_iocorner #( | ||
parameter TYPE = "DEFAULT", // cell type | ||
parameter SIDE = "NO", // "NO", "SO", "EA", "WE" | ||
parameter RINGW = 8 // width of io ring | ||
) ( | ||
inout vdd, // core supply | ||
inout vss, // core ground | ||
inout vddio, // io supply | ||
inout vssio, // io ground | ||
inout [RINGW-1:0] ioring // generic io-ring interface | ||
); | ||
module la_iocorner | ||
#( | ||
parameter PROP = "DEFAULT", // cell property | ||
parameter SIDE = "NO", // "NO", "SO", "EA", "WE" | ||
parameter RINGW = 8 // width of io ring | ||
) | ||
( | ||
inout vdd, // core supply | ||
inout vss, // core ground | ||
inout vddio, // io supply | ||
inout vssio, // io ground | ||
inout [RINGW-1:0] ioring // generic ioring interface | ||
); | ||
|
||
endmodule |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,24 @@ | ||
/***************************************************************************** | ||
* Function: IO cut cell | ||
* Function: Supply Ring Cut IO Cell | ||
* Copyright: Lambda Project Authors. All rights Reserved. | ||
* License: MIT (see LICENSE file in Lambda repository) | ||
* | ||
* Docs: | ||
* | ||
* ../README.md | ||
* | ||
****************************************************************************/ | ||
module la_iocut #( | ||
parameter TYPE = "DEFAULT", // cell type | ||
parameter SIDE = "NO", // "NO", "SO", "EA", "WE" | ||
parameter RINGW = 8 // width of io ring | ||
) ( | ||
module la_iocut | ||
#( | ||
parameter PROP = "DEFAULT", // cell property | ||
parameter SIDE = "NO", // "NO", "SO", "EA", "WE" | ||
parameter RINGW = 8 // width of io ring | ||
) | ||
( | ||
// ground never cut | ||
inout vss | ||
); | ||
); | ||
|
||
// TODO: interface? | ||
|
||
endmodule |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,38 +1,34 @@ | ||
/***************************************************************************** | ||
* Function: IO bi-directional buffer | ||
/************************************************************************** | ||
* Function: Digital Input IO Cell | ||
* Copyright: Lambda Project Authors. All rights Reserved. | ||
* License: MIT (see LICENSE file in Lambda repository) | ||
* | ||
* Docs: | ||
* | ||
* This is a generic cell that defines the standard interface of the lambda | ||
* bidrectional buffer cell. It is only suitable for FPGA synthesis. | ||
* ../README.md | ||
* | ||
* ASIC specific libraries will need to use the TYPE field to select an | ||
* appropriate hardcoded physical cell based on the the process constraints | ||
* and library composition. For example, modern nodes will usually have | ||
* different IP cells for the placing cells vvertically or horizontally. | ||
* | ||
****************************************************************************/ | ||
module la_ioinput #( | ||
parameter TYPE = "DEFAULT", // cell type | ||
parameter SIDE = "NO", // "NO", "SO", "EA", "WE" | ||
parameter CFGW = 16, // width of core config bus | ||
parameter RINGW = 8 // width of io ring | ||
) ( // io pad signals | ||
inout pad, // bidirectional pad signal | ||
inout vdd, // core supply | ||
inout vss, // core ground | ||
inout vddio, // io supply | ||
inout vssio, // io ground | ||
*************************************************************************/ | ||
module la_ioinput | ||
#( | ||
parameter PROP = "DEFAULT", // cell property | ||
parameter SIDE = "NO", // "NO", "SO", "EA", "WE" | ||
parameter CFGW = 16, // width of core config bus | ||
parameter RINGW = 8 // width of io ring | ||
) | ||
(// io pad signals | ||
inout pad, // input pad | ||
inout vdd, // core supply | ||
inout vss, // core ground | ||
inout vddio, // io supply | ||
inout vssio, // io ground | ||
// core facing signals | ||
output z, // output to core | ||
input ie, // input enable, 1 = active | ||
inout [RINGW-1:0] ioring, // generic io-ring interface | ||
input [ CFGW-1:0] cfg // generic config interface | ||
); | ||
output z, // output to core | ||
input ie, // input enable, 1 = active | ||
inout [RINGW-1:0] ioring, // generic ioring interface | ||
input [CFGW-1:0] cfg // generic config interface | ||
); | ||
|
||
// to core | ||
assign z = ie ? pad : 1'b0; | ||
// to core | ||
assign z = ie ? pad : 1'b0; | ||
|
||
endmodule |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.