Mixed signal SoC is a chip which contains both analog and digital blocks. The designers are adding more analog circuitry and increasing their complexities day by day. Not only that, they also contain digital control logic. As the process nodes shrink, the demand for integration grows. A divide and conquer approach is followed, where the analog and digital structures were dealt with separately. Usually, an analog IP (Intellectual Property) is bought as black- box.
Here, the digital block is the RVMyth RISC-V CPU Core and the analog block is a PLL(Phase Locked Loop). This project aims to integrate these two blocks with the PLL serving as a clock multiplier.
RVMYTH Core: https://github.com/infini8-13/riscv-tlv-core
PLL: https://github.com/vsdip/rvmyth_avsdpll_interface
Makerchip: Makerchip is a free web-based IDE as well as available as makerchip-app.
Icarus Verilog: Icarus Verilog is an open-source Verilog compiler used for simulation and synthesis.
GTKWave: GTKWave is a fully featured GTK+ based wave viewer, also open-source.
Xilinx Vivado: Xilinx Vivado delivers a SoC-strength, IP-centric and system-centric, next generation development. This project is developed using Vivado ML Edition 2021.1.
SandPiper: Sandpiper is a code generator that generates readable, well-structured, Verilog or SystemVerilog code from the given TL-Verilog code.
5 Stage Pipeline RISC-V32I Core written in Transaction Level Verilog(Later converted to Verilog for SoC Integration)
Phase Locked Loop IP - avsdpll_1x8 - used a multiplier in this SoC and forms the analog block
To achieve the integration, a verilog block for the PLL should be generated and the output of the PLL is given as an input to the rvmyth. This will create the interface.
Using Sandpiper to produce Verilog code from TL-V
git clone https://github.com/shivanishah269/vsdfpga.git
cd vsdfpga/verilog
sandpiper-saas -i rvmyth.tlv -o rvmyth.v --iArgs
Design a PLL as a clock multiplier using verilog and test the functionality.(PLL IP)
iverilog avsd_pll_1v8.v pll_tb.v
./a.out
gtkwave test.vcd
-
Now integrate both rvmyth and avsdpll using a top level testbench and test it to verify.
-
This flow involves RTL simulation(similar to above) in Vivado, beginning with IP Generation for the PLL and waveform interface as Clocking Wizard and Integrated Logic Analyser(ILA) IPs, respectively. Clocking Wizard generates HDL source code to configure a clock circuit to according our requirements specified in the source code, in our case a PLL acting as a clock multiplier. Next in the pipeline comes synthesis and implementation for the target Zedboard. Implementation involves optimization, placing and routing. It also involves checking of timing constraints.
- https://github.com/infini8-13/riscv-tlv-core
- https://github.com/vsdip/rvmyth_avsdpll_interface
- https://github.com/shivanishah269/vsdfpga
- https://github.com/vsdip/vsdmixedsignalflow
- Shivani Shah, IIIT Bangalore.
- Kunal Ghosh, Co-founder, VSD Corp. Pvt. Ltd.
- Steve Hoover, Founder, Redwood EDA