Hochschule Kempten      
Fakultät Elektrotechnik      
Microelectronics       Fachgebiet Elektronik, Prof. Vollrath      

Microelectronics Laboratory

2025 Scalable Serial Processor

Prof. Dr. Jörg Vollrath






Outline


A step by step update will be done.

Verilog Project Files


  • Download Sources, Start Vivado, Select BASYS3, Add hardware files and simulation sources to Verilog Project
  • Design Sources (Set as Top)
    • SerialCompute.v
      • parSer.v (Parallel serial converter)
      • serPar.v (Serial parallel converter)
      • serInvSer.v (Serial processing element: Inverting direct and with buffer )
    • Additional development files: FDonly.v, SerSimple.v, SerialComputeFull.v
  • Simulation Sources
    • Test1_SerialCompute.v
      Instances
      Test vectors
  • Inspect sources
  • Run Simulation
  • Run Synthesis, open design, write structural VHDL to file
    write_vhdl <filename>
    write_vhdl C:/temp/2025_Micro_JV/SerialCompute.v

Verilog Interface


module SerialCompute(
 clk, ce, rst, 
 te, tdi, tdo, 
 a,y);
 input clk;
 input ce;
 input rst;
 input te;
 input tdi;
 input [3:0] a;
 output tdo;
 output [3:0] y;

Verilog Design Top Module


 wire tdo1;
 wire tdo2;
 wire [3:0] ay0;
 wire [3:0] ay1;
 
  parSer pS0(.clk(clk), .ce(ce), .rst(rst), 
                    .te(te), .tdi(tdi), .tdo(tdo1), 
                    .a(a), .y(ay0)); 
  serPar sP0(.clk(clk), .ce(ce), .rst(rst), 
                    .te(te), .tdi(tdi), .tdo(tdo), 
                    .a(ay1), .y(y)); 

  serInvSer sIS0(.clk(clk), .ce(ce), .rst(rst), 
                    .te(te), .tdi(tdi), .tdo(tdo2), 
                    .a(ay0), .y(ay1)); 
There are 3 instances of modules implemented.
parSer pS0 generates a serial stream at ay0.
serInvSer sIS0 takes ay0 and inverts, delays the stream and gives the stream ay1.
serPar sP0 takes ay1 and converts it to a parallel output at y.

Verilog Simulation Top Module Instances


Instances

module Test1_SerialCompute();
 reg clk = 1;
 reg ce = 1;
 reg rst = 0;
 reg te = 0;
 reg tdi = 0;
 reg [3:0] a = 4'b1111;

 wire [3:0] y5;
 wire tdo5;

 SerialCompute sC0(.clk(clk), .ce(ce), .rst(rst), 
                    .te(te), .tdi(tdi), .tdo(tdo5), 
                    .a(a), .y(y5)); 
There are more instances of modules implemented to test all of them.

Verilog Simulation Top Module Vectors(2)


// Clock process definitions
always #10 clk = ~clk;  // setup Tclk = 20ns 50 MHz CLK
initial begin
  #0 a = 4'b1111; 
  #15 rst = 1;         // reset
  #10 rst = 0;         //
  #20 te = 1;          // configure via te
      tdi = 0;         // test data 0
  #20 tdi = 0;         // test data 1
  #20 tdi = 0;         // test data 2
  #20 tdi = 0;         // test data 3
  #20 te = 0;
  #5  te = 0;
  
  #20 a = 4'b0111;     // start a data in
  #20 a = 4'b1011;
  #20 a = 4'b0101;
  #20 a = 4'b1100;
  ...
There are more instances of modules implemented to test all of them.

Verilog Simulation Result



The Vivado environment looks similar to a software IDE and Electric VLSI design system.
(A) lists all design steps: Project, Simulation, Synthesis and Programming
(B) lists all files and configurations
(C) In these tabs files can be edited and results (simulation, implementation are shown.
(D) Contains all messages and errors.

Run Simulation starts the simulation of the top simulation module.
It takes some time until the displayed waveform window appears.
Clicking on (2) fills the window with the complete simulation.
Clicking on (3) resets the simulation.
A simulation time can be put into field (4).
A simulation for this time can be started with (5).
In (6) all available modules are shown. Clicking on the module shows the internal signals (7).
These signals can be added by drag and drop to the simulation window (8), but are only shown after a reset and start of the simulation.

The simulation shows all top signals.
The generated input signals are shown and can be verified and the output signals.

Synthesis and Layout


LTSPICE option for starting the simulation:
.options noopiter srcstepmethod=0 gminsteps=0
Resulting Messages:
Direct Newton iteration for .op point skipped.
Gmin stepping method for .op point skipped.
Starting source stepping with srcstepmethod=0

Generating LTSPICE input signals


Important LTSPICE simulation commands
.include cmosedu_models.txt
.options noopiter srcstepmethod=0 gminsteps=0
VCLK clk 0 PULSE(0 1 9n 1n 1n 9n 20n)
VCE ce 0 DC 1
vdd vdd 0 DC 1
Vddx vddx 0 DC 1
VGND gnd 0 DC 0
VGNDx gndx 0 DC 0
Vrst rst 0 PULSE(0 1 14n 1n 1n 9n 600n)
Vtdi tdi 0 DC 1
Vte te 0 PULSE(0 1 44n 1n 1n 80n 600n)
* output y__0 y__1 y__2 y__3 tdo
.tran 0 1000n

Tasks



  • Compare LTSPICE simulation and Vivado simulation for serPar.v or parSer.v (SerSimple.v)
    Click on the file serPar.v or parSer.v listed under 'Design Sources' in the 'Source' tab and 'Set as Top'.
    Run synthesis creates a new structural VHDL
  • What is the area per transistor in this design and in the subcircuits?
    How many transistors are used?
  • Is there a maximum number of transistor for LTSPICE simulation?
    Add more/less instances, synthesize and simulate with LTSPICE
Input signalsDelay of circuit:Circuit****xx, LF
0001, 0101 MUX4, LUT3 serPar******26,MT******49,KK******34,AM******49,DS******01,MT******03,KJ
0010, 0110 MUX2, LUT4 parSer******40,ZS******07,LS******47,DA******86,SN******03,TA******02,IK
0100, 1010 MUX4, LUT5 serPar******97,HL******10,NR******44,AM******36,BN******02,SS******08,RM
1000, 0011 MUX2, LUT3 parSer******89,BF******36,KB******71,HQ******19,RB******15,AN******34,VM
1110, 1001 MUX4, LUT4 serPar******63,PV******48,SK******09,KM******48,BB******00,KN******47,MS
1101, 1100 MUX2, LUT5 parSer******45,EY******18,AA******40,BB******17,BJ******08,II******50,RS******76,BS
1011, 0111 MUX4, LUT3 serPar******95,BB******62,RM******86,GB******02,MR******51,HM******63,RS******14,HM

Open Tasks and Issues