Skip to content

Latest commit

 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

hwcore

maturity license

Bus-neutral contracts and shared primitives for the Tape-Out IP library, written in Bluespec.

Every IP in the library depends on this package and on nothing else. Bus protocols (amba, tilelink, wishbone) also depend on it. Dependencies only ever point here, so adding a bus costs one adapter instead of a wrapper in every IP.

Contracts

Plane Contract File
Control RegIf#(aw, dw) — one access(RegReq) -> RegRsp method hwsrc/RegIf.bsv
Data Get#(t) / Put#(t) from the BSV standard library —
Interrupt Bool, gathered by the fabric hwsrc/Fabric.bsv

An IP implements RegIf and knows nothing about any bus. Binding to APB4, AXI4-Lite, Wishbone or TL-UL happens at integration time, in the bus package.

Fabric

mkFabric takes a vector of Device records and returns a single RegIf, decoding addresses at elaboration time. Interrupts are collected with irqsOf.

Vector#(2, Device#(32, 32)) devs =
    cons(device(32'h1000_0000, 32'h100, gpio.regs, tagged Valid gpio.pins.irq),
    cons(device(32'h1000_1000, 32'h100, uart.regs, tagged Invalid),
    nil));

RegIf#(32, 32) bus <- mkFabric(devs);

Overlapping ranges are caught by overlaps at compile time rather than in simulation.

License

任选其一:

SPDX-License-Identifier: MIT OR Apache-2.0 OR MulanPSL-2.0

除非另行说明,你提交的贡献按上述三者同时授权,不附加其他条件。

About

Bus-neutral contracts and shared primitives for the Tape-Out IP

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages