audioport_specification_and_guide_2024
audioport_specification_and_guide_2024
1.0.1 13.1.2017 JL Fixed hex APB3 addresses in memory map to be 32-bit in 3.3.2.
4.0 2.10.2020 JL Updated for 2020. Combined audioport design guide to this
document.
5.0 JL Changes:
● APB signal names change to match ARM recommendations
● mrst_n reset signal is derived from rst_n in cdc_unit
The audioport is designed to function as a responder device on the SoC's peripheral bus. This
bus is based on the AMBA advanced peripheral bus (APB) specification. It is connected to the
SoC's main bus via a bus bridge that generates APB-protocol-compliant signals for the APB
responders from the SoC's main bus signals, and multiplexes read data buses originating from
the APB responders to the main bus. The audioport is also assumed to be connected to an
interrupt controller unit with signal irq_out. The audioport receives the clock (clk, mclk) and
reset signals (rst_n) from the SoC's clock and reset generator units.
The purpose of the audioport is to function as an interface unit between the software running
on the SoC's CPU (e.g. an audio player) and an off-chip audio codec chip (e.g. a digital-to-
analog converter). The audioport appears as a memory-mapped responder device for the
CPU. When the CPU writes audio data to audio buffer registers inside the audioport's
control_unit block, the audioport converts them to a serial audio bit stream that complies with
the I2S protocol that is supported by most audio codec chips. The CPU can also perform
various control tasks on the audioport by writing to memory-mapped control registers inside the
control_unit. When the audioport has consumed all audio data from its buffer it can request
new data from the CPU by raising the interrupt signal irq_out. The audioport contains a digital
signal processing unit (dsp_unit) that can be used to perform specific signal processing tasks
on the audio data before it is sent out through the I2S interface unit (i2s_unit).
The audioport consists of two mutually asynchronous clock domains. The control_unit and
dsp_unit use the clock signal clk that is common to the APB subsystem. The i2s_unit uses a
clock signal mclk that also functions as a clock signal for the external audio codec chip. The two
clock domains, indicated with green and yellow colors in the figure above, communicate through
a clock domain crossing unit (cdc_unit) that implements the required synchronization functions.
The asynchronous, active-low reset signal for the flip-flops clocked with clk is rst_n. It can be
assumed to be synchronized to clk, and to change its state on the falling edge of clk.
The asynchronous, active-low reset signal for the flip-flops clocked with mclk is mrst_n, which
is generated internally from rst_n in the cdc_unit. It can be assumed to be synchronized to
mclk.
The input and output ports of the design are listed in the following table.
PORTS
Name Direction Width Type Description
(bits)
clk input 1 logic Rising-edge sensitive clock signal input for main clock domain.
rst_n input 1 logic Active-low, asynchronous reset signal input for main clock domain.
mclk input 1 logic Rising-edge sensitive clock signal input for I2S clock domain.
PSEL input 1 logic AMBA APB PSEL signal.
PENABLE input 1 logic AMBA APB PENABLE signal.
PWRITE input 1 logic AMBA APB PWRITE signal.
PADDR input 32 logic AMBA APB PADDR bus.
PWDATA input 32 logic AMBA APB PWDATA bus.
PRDATA output 32 logic AMBA APB PRDATA bus.
PSLVERR output 1 logic AMBA APB PSLVERR signal
PREADY output 1 logic AMBA APB PREADY signal.
irq_out output 1 logic Active-high interrupt request output
sck_out output 1 logic I2S serial clock output.
ws_out output 1 logic I2S word select output
sdo_out output 1 logic I2S serial data output.
test_mode_in input 1 logic Active-high test mode select input.
scan_en_in input 1 logic Active-high scan path enable input.
The input and output delays of data inputs and outputs are assumed to be less than 1/8 of
the clock cycle.
The scan path enable input scan_en shall be unconnected in the RTL design and connected in
test synthesis.
The interval between CMD_START and CMD_STOP commands (defined below) should be
larger than one 48 kHz sample duration (1/48000 s)
1.3.2.1. control_unit
The control_unit contains an AMBA 3 APB bus interface (protocol specification version 1.0)
and a register bank for control, configuration and audio data. The control_unit serves the
following of purposes:
● storage of configuration and audio data in a the register bank,
● decoding of commands that the host CPU sends to the audioport by writing command
codes to a specific control register in the control data register bank.
● logic for "streaming" (reading out in order) of audio data from the register bank
● interrupt generation logic
● status register that provided status information to the CPU
1.3.2.2. dsp_unit
The dsp_unit implements digital signal processing functions that can be used to process the
audio data before it is sent to the i2s_unit. The DSP functions are:
● filter (stereo enhancement filter)
● scaler (output level scaler)
The filter can be enabled or disabled by writing to a configuration register in the control_unit.
1.3.2.3. cdc_unit
The clock domain crossing block cdc_unit contains clock domain crossing logic that is needed
to transfer data between the "clk" clock domain and the "mclk" clock domain.
1.3.2.4. i2s_unit
The i2s_unit contains a "serializer" shift-register that converts parallel audio data into a serial
bit-stream sdo_out that conforms to the I2S protocol specification. The i2s_unit also generates
the I2S serial bit-clock (sck_out) and left/right word-select (ws_out) signals. The i2s_unit
generates the audio sample rates (48kHz, 98kHz or 192kHz) and requests audio samples at the
selected sample rate from the control_unit.
1.3.2.5. Block Interconnect Signals
The following table shows the internal signals of the audioport..
Submodule i2s_unit uses the clock signal mclk and the reset signal mrst_n.
Submodule cdc_unit receives the clock signals clk and mclk, and the reset signal rst_n. It
generates the reset signal mrst_n by synchronizing rst_n to the falling edge of clock mclk. The
cdc_unit contains synchronization logic that synchronizes all data signals that pass between
modules that reside in different clock domains into the clock signal of the receiving clock
domain.
The bus controller (CPU) can control the audioport through a memory-mapped control register
interface by writing data to APB bus addresses reserved for the audioport. The control_unit
contains a register bank whose registers correspond to these bus addresses. The base address
of the region of the CPU's memory space reserved for the audioport on the APB bus is defined
by the AUDIOPORT_START_ADDRESS parameter (set to the first free APB address in the
EASY system, defined as 32'h8C000000 in file audioport_pkg.sv). Each register is logically 32
bits wide and organized in a little-endian manner.
Read and write accesses to all registers except the CMD_REG (defined below) should go
through with zero wait states. For CMD_REG writes, the bus interface in the audioport should
insert CMD_WAIT_STATES wait states, where CMD_WAIT_STATES is an integer obtained by
the formula
CMD_WAIT_STATES = 6 + roundup(6*MCLK_PERIOD/CLK_PERIOD).
The purpose of these wait states is to give the logic in the mclk clock domain time to handle
commands before a new command can be written by the CPU. The formula estimates the
synchronization delay of clock domain crossing logic.
? ? DSP_DATA_END
? ? ABUF0_START
? ? ABUF0_END
ABUF1_START
? ? ABUF1_END
CMD_CLR 32'h00000001 Clear all audio data from audio buffers and the dsp_unit.
CMD_START 32'h00000004 Put control_unit in play mode and start the sample rate counter in
i2s_unit that generates req pulses.
CMD_STOP 32'h00000008 Put control_unit in standby mode and stop the sample rate counter
in i2s_unit that generates req pulses.
STATUS_PLAY 0 Indicates the mode audioport is in. Play mode = '1, standby mode = '0.
STATUS_CLR_ERR 1 This bit is set to '1 if a CMD_CLR command was executed when the
audioport was in play mode. (Fixed 15.1.2024)
STATUS_CFG_ERR 2 This bit is set to '1 if a CMD_CFG command was executed when the
audioport was in play mode. (Fixed 15.1.2024)
STATUS_IRQ_ERR 3 This bit is set to '1 if the interrupt output irq_out was raised and a
CMD_IRQACK command was not executed before the irq_out should have
been raised again.
STATUS_CMD_ERR 4 This bit is set to '1 if an unrecognized command code was written into the
command register CMD_REG.
BIT
31-4 3 2 1 0
FILTER STEREO SAMPLE RATE SELECT
0=disabled 0 = normal 00 = 48 kHz
NOT USED
1=enabled 1 = mono 01 = 96 kHz
10 = 192 kHz
1.3.4.5. DSP Data Registers (DSP_REGS_START ... DSP_REGS_END)
The DSP data registers hold 32-bit digital filter coefficients. One 32-bit memory location is
reserved for each coefficient. The number of 32-bit memory locations reserved for this data area
depends on the design parameter FILTER_TAPS and is 4 * FILTER_TAPS.
The coefficient values are represented as 32-bit signed fixed-point values in the format <1.31>
(1 bits on left side of point, 31 bits on the right). Filter coefficient values should therefore be
normalized to range -1 <= value < 1 in decimal.
The number of memory locations reserved for this data area is 2 * AUDIO_BUFFER_SIZE * 2.
Left stereo channel samples are stored in registers whose index is even and right stereo
channel samples are stored in registers whose index is odd.
Audio data samples are represented as 24-bit signed integer values whose format is <24.0> (24
bits on left side of point, 0 bits on the right). Audio data is represented as bits [23:0]. 8 most-
significant bits are ignored in audio processing.
The ABUF region of the register bank is divided into two logical regions, ABUF0 and ABUF1.
When audio data from one region is used, the other can be filled by the host CPU. If the last
audio sample of the current ABUF region has been used, the control logic sets irq_out == '1 to
request the CPU to fill the buffer region that was just used. This way the CPU will never
overwrite data in the buffer region that is currently in use.
In play mode, the audioport "streams" data from the ABUF registers in the control_unit
through the dsp_unit and cdc_unit to the i2s_unit, where it is converted into serial format
according to the I2S specification. Play mode is enabled by writing the command code
CMD_START into the CMD_REG register. Playmode is disabled and standby mode enabled by
writing the command code CMD_STOP into the CMD_REG register.
When the control_unit detects the request from req signal in the "clk" clock domain, it notifies
the dsp_unit that the next stereo audio data sample is available in the control_unit's audio
outputs ports using the tick signal, and then places the next stereo audio sample from the
ABUF region of its register bank in these ports that drive the audio0 and audio1 signals. When
the last stereo sample of the current region (ABUF0 or ABUF1) has been consumed, the
control_unit requests more data from the host CPU by raising the interrupt request output
irq_out. The host CPU should respond by filling the ABUF region that was just used.
When the dsp_unit has processed the sample, it must set its data valid indicator output signal
dsp_tick to state 1 for one clock cycle to indicate that data can be read from its output ports
that drive the dsp0 and dsp1 signals. These signals are connected to the cdc_unit, which
synchronizes them to the mclk clock signal. The cdc_unit's outputs are connected to the
i2s_unit's respective inputs. The i2s_unit reads the next stereo audio data sample to its input
register when the signal mtick is high. From there the sample is moved to a shift-register for
parallel-to-serial conversion, when the previous sample has been shifted out.
Concurrently with the process described above, the i2s_unit continuously shifts out databits
from a shift-register at the selected audio sample rate. The sample rate is determined by bits
[1:0] of the configuration register CFG_REG whose contents are available in the mclk domain
signal mcfg_reg.. At the same time, the i2s_unit generates the sck_out and ws_out I2S
timing signals. When all 48 bits of a stereo audio sample have been shifted out, the i2s_unit
processes the next sample from the input register and at the same time requests a new sample
from the control_unit. The i2s_unit always shifts out a complete 48-bit sample even if the
circuit is put to standby state in the middle of a sample.
A transaction level model of the audioport can be used to simulate the behavior of the design. It
executes the steps described above.
2. RTL Architecture Specifications
The audioport module does not contain any functional logic. Detailed functional requirements of
RTL submodules are given in a separate specification document.
3. Design Guidelines
3.1. Design Parameters Setup
File Description
audioport_defs.h A C-language header file that contains the same data as the package file.
apb_pkg.sv SystemVerilog package file that defines the APB bus parameters. The
DUT_* addresses refer to your design. Make the whole APB address space
defined by the APB_* parameters about twice your address space
rounded to the next power of two.
The APB_MAX_WAIT_STATES and APB_INPUT_DELAY values can initially
be left as they are.
audioport.sdc Synopsys Timing Constraints file read by synthesis and verification tools.
Edit the clk and mclk clock period definitions, and define input and output
delays.
0_setup_audioport.tcl File read by all EDA tools command scripts. Define the clock periods and
input and output delays as TCL variables as all tools don't use the SDC file.
File Description
The modules control_unit, dsp_unit, cdc_unit and i2s_unit should all be instantiated in the
top-level module audioport. The top-level module should not contain any functional code.
When the initial design hierarchy has been created, you can begin to work with the
submodules/subprojects control_unit, i2s_unit, cdc_unit and dsp_unit. When you complete a
subproject, it will be automatically instantiated in the audioport hierarchy through its top
module. Separate design guides are provided for the control_unit, dsp_unit, cdc_unit and
i2s_unit.
Coverage data is collected from all functional and formal verification tasks.
set UVM_TESTBENCH 1
This setting defines the UVM_TESTBENCH macro for the compiler, and enables compilation of
UVM specific parts of the testbench.
The main parts of the testbench module audioport_tb are shown in the next figure. The
audioport module is instantiated as usual. Three SystemVerilog interface objects of type
apb_if, irq_out_if and i2s_if are also instantiated. The I/O ports of audiport are connected to
the variables in the interface objects using assign statements (red arrows).
In the initial procedure, handles to the interface objects are first pushed into the UVM
configuration database. After that, the test is started by calling the UVM task run_test. This
creates all the UVM test components. They get handles to the interface objects by reading them
from the configuration database. This way objects from the UVM class hierarchy get access to
the audioport module's ports.
You can select the UVM test to be executed by setting the UVM_TESTNAME TCL variable in
input/0_setup_audioport.tcl
This setting is passed to the simulator command vsim as a command line argument. The three
tests are:
apb_test Simple APB read-write test from the lecture textbook.
audioport_uvm_test Complete test that covers all I/O:s and contains a reference
model to which DUT outputs are compared.
Each test has its own test environment. These are described in a separate document audioport
UVM Tests.
Functional verification should be carried out by simulation with QuestaSim. Each UVM test
should be simulated separately by first selecting the test in 0_setup_audioport.tcl, and then
executing QuestaSim normally. Coverage data is saved from all tests and merged in the
verification tracking tool to obtain the total coverage result.
Even though all modules have been thoroughly verified, the simulation of the complete system
may still reveal differences between the reference model or firings of assertions. Some probable
cases are:
● Differences in computation accuracy between the reference model and the DUT that
may cause minor differences
● Timing differences between the reference model and the DUT caused by the CDC
delays etc.
For these reasons, a visual similarity of the waveforms is an acceptable result for this test.
Tip: Select the VCD snapshot window settings for power estimation at this point as shown below.
Mark the start and end time in your project progress report in section 7.8.1. and use them in power-
analysis. The start time should be just before the first interrupt of the first test (192kHz) and the end
time at a time when the interrupt has been served. This is the most active state of the design
(dsp_unit and i2s_unit are processing data and at the same time the bus interface is active). Make
sure that at least a couple of "tick" intervals are included so that dsp_unit activity is also captured.
F F F C R
F F F E
C R
R C E
E
F F F C R
F F F E
C R
E
R C F F F C R
E F F F E
If reconvergence issues are detected in static analysis, the CDC verification tool creates
protocol checker assertions that detect potentially dangerous conditions in protocol simulation.
The assertions check that the hamming distance of data on reconvergent paths is one, meaning
that only one data bit should change at a time.
RTL simulations are also done with metastability injection enabled. The injectors are added in
clock domain crossings in the simulation model by the CDC analysis tool. When the injector
detects that the transmit and reception clock edges are aligned, it injects a random one-clock-
cycle delay variation into the data. If the circuit is properly designed, this should not cause a
malfunction.
4. audioport Implementation
The implementation flow consists of tasks in which the verified RTL SystemVerilog and VHDL
code is synthesized and optimized using logic gates and flip-flops from a target technology
library, after which an integrated circuit layout pattern database is created using "standard cells"
from the target library. This "back-end" flow also contains many verification and analysis tasks.
The figure below shows an overview of the back-end flow used in DT3. The green rectangles
represent synthesis (design data transformation) tasks, the yellow rectangles verification and
analysis tasks, and the gray rectangles design data. All tasks are executed using EDA tools with
automatic tool scripts. Therefore the whole back-end flow is automated.
The assumed timing relations of the I/O signals are shown in the figure below.
The SDC file defines the clock clk and mclk, and "virtual" clocks virtual_clk and virtual_mclk.
Virtual clocks only define the timing waveform, but they are not attached to any ports. This
allows us to modify the real clock descriptions with latency and skew settings without distorting
the external timing constraints. Input and output delays are defined with respect to the virtual
clocks.
Input drive and output load settings can be used as they are in the template file.
If the scan chain has N flip-flops, executing one test takes N+1 clock cycles. Testing a chip with
only one scan chain would be slow. Therefore several parallel scan chains are used. They can
share the scan_en_in port, but a separate input and output port must be reserved for each
chain. The number of scan chains must be decided by the designer. For this project, we assume
that the test clock frequency is 10 MHz. Furthermore we assume that one test should not take
more than 1 ms, allowing us to perform 1000 tests in a second. If we know the number of flip-
flops in the design, we can calculate the number of scan chains required.
Scan chains are created automatically by the RTL synthesis tool. The tool needs to know the
number of scan chains and their input and output ports. Normal data ports can be used as scan
chain I/O ports. The synthesis tool will add multiplexers controlled by scan_en_in at the output
ports so that the normal mode operation is not affected by test logic.
You can enable scan chain insertion settings in file 0_setup_audioport.tcl by defining the
number of chains you want to insert, e.g.
set INSERT_SCAN_CHAINS 3
You can define the scan chain configuration in file input/audioport.dft_setup.tcl by defining
the number of scan chains and the input and output port used for each chain, the scan enable
input port name, and the name of the port used as test clock input. The template file show below
tells the tool to create two scan chains, use scan_en_in as thescan enable input, and form the
first chain between ports PADDR[0] and PRDATA[0], and the second between PADDR[1], and
PRDATA[1]. Any input except clocks, resets the scan_en_in and the test_mode_in signal
discussed below can be used as scan input and any output can be used as scan output. The
remaining inputs and outputs can be used to apply and read test data in parallel on the clock
cycles when test data is applied. The file defines a test setup that is depicted in the figure below.
# Scan clock (rises at 45ns, falls at 55ns, test clock period is 100ns by default)
set_dft_signal -view existing_dft -type ScanClock -timing { 45 55 } -port clk
# Reset
set_dft_signal -view existing_dft -type Reset -port rst_n -active_state 0
You should first run synthesis without clock gating, and then with clock gating, and find out from
the power consumption reports if the design benefits from clock gating.
You can also experiment with the following parameter, which limits the number of flip-flops that
can be controlled by one clock gating cells. The optimal value depends on the design's
properties.
set CLOCK_GATE_CLOCK_MAX_FANOUT 16
The -positive_edge_logic option instructs the tool to use an integrated clock gating cell from the
target library for gating rising-edge sensitive flip-flops, and the -negative_edge_logic option to
choose any suitable OR gate for falling-edge sensitive flip-flops (the library we use does not
have an integrated cell for this purpose). The -control_point and -control_signal option tell how
the clock gates should be bypassed in test mode by the logic added by the synthesis tool to
improve testability. As a result, the scan_en_in signal will be connected to a second enable
input of the latch inside the clock gating cell.
TMAX uses the stuck-at -fault model and tries to generate test patterns that allow all possible
faults to be detected by using the scan path. The TCL script uses the following variables that
you can change if needed:
set POSTLAYOUT_ATPG 0
set TMAX_ABORT_LIMIT 1
set TMAX_CONTINUE_ATPG 0
The POTSLAYOUT_ATPG = 0 setting tells the script to use the gate-level netlist
(results/audioport_gatelevel.v). The abort limit setting limits the time TMAX spends searching
for patterns. You can increase the limit if test coverage is low after an ATPG run. If
TMAX_CONTINUE_ATPG = 1, the script will continue with the patterns already found and
saved during previous sessions, so that it does not have to start from the beginning if not-
detected (ND) faults remain.
This TMAX script reads the files results/audioport_postlayout.v (Verilog netlist) and
results/audioport_postlayout.stil (scan chain descriptions), and starts to generate patterns.
If ATPG results are bad (test coverage < 100%) and you have no idea where the hard-to-test
part of the design is, you can launch the TMAX GUI (command tmax) and run the script from
the File menu. After the script has finished, you can use the Analyze command in the GUI to
print out names of some of the gates that could not be tested (Analyze > Faults > Fill > Class =
ND and OK) and find out the reason why a test could not be generated. If the reason was
"abort", you can increase the abort limit (run time). If running ATPG longer does not help, you
have to think of ways to improve testability, e.g. by making combinational logic less deep.
The initial TCL settings are probably too "weak" for the complete design, so if the initial test
coverage is low, increase the abort limit and set TMAX_CONTINUE_ATPG to 1, and run the
script again. The reports
● 9_tmax_audioport_not_observed_faults.txt
● 9_tmax_audioport_not_detected_faults.txt
help you understand which parts of the design have testability problems. Violations are reported
in
● 9_tmax_audioport_violations.txt
After the patterns have been created, you can simulate the design with the patterns as test data
using a testbench generated by TMAX. This allows you to see how the design and the patterns
would work with real test equipment.
On block-level, creating a layout is a fairly simple process, once all design and technology data
have been properly set up. To create a prototype layout, the following data are required:
● Design data
○ Gate-level netlist from logic synthesis tool (results/audioport_gatelevel.v)
○ Timing constraints file from logic synthesis tool
(results/audioport_gatelevel.sdc)
○ Clock-tree specification file (not used in this exercise, the layout tool creates a
clock tree with default settings)
○ Scan chain definition file from logic synthesis tool (results/audioport.scandef)
○ I/O pin place assignment file (not used in this exercise, the layout tool select pin
locations automatically)
● Technology data (defined in layout tool command script)
○ Standard cell timing libraries
○ Standard cell layout images ("LEF-files")
○ Routing capacitance tables
○ Global signal names (power, ground)
The layout of the audioport block is created with Cadence Innovus digital implementation tool.
Innovus reads the gate-level Verilog netlist file that was created by the logic synthesis tool,
places the components’ layout images in rows inside a rectangular “tile”, and finds routes for
metal layer wires to connect the components’ terminals. Innovus also builds a buffering tree for
the clock signal. The script scripts/6_innovus_layout_synthesis.tcl is used to control the
tool. The script saves the placed and routed design in output/audioport_postlayout.enc
where you can later open with File > Restore Design after executing run/innovus.
Notice: The Innovus script runs with optimization effort level "express" which can leave
connectivity and geometrical design rule violations in the design. You can ignore these, or run
the script with a higher effort level setting as explained below in 5.9.
The layout script uses a standard cell density setting of 70%, which means that 70% of silicon
area is used for components to allow more vertical and horizontal routing channels to be
created. If you want to use different utilization settings, set the following variable in
0_setup_audioport.tcl, and execute run/innovus_layout again.
After reading the inputs, the tool provides an overview of the setup and hold timing for all path
groups:
Total Negative Slack
Worst Negative Slack
Number of violating endpoints
When you select a line in the list, a histogram that shows an overview of the timing paths in that
group is shown. In the example shown below, all paths had possessive slack, as indicated by
the NVE and WNS columns in the summary table above. If you select a bin in the histogram, the
slack of the paths in the selected bin is shown in the list below the histogram.
From the path list, you can use the right-mouse-button menu command Inspect Worst Paths to
open a path inspector window for the selected paths. There you can see a detailed description
of the paths, and generate path schematics and waveforms that help you analyze path timing.
Below is an example of a waveform that shows how the slack value has been computed.
STARTPOINT
DATA
ARRIVAL
TIME AT
ENDPOINT
ENDPOINT
PrimeTime also shows the standard timing reports for setup and hold timing in the reports
directory.
In this project, STA is used to identify the most critical register-to-register paths in the design. If
the paths have negative slack, you don't have to try to fix it, unless there is an obvious reason
and the fix is simple. The aim is to learn to analyze the timing so as to identify problematic parts
in the design.
These variable settings tell the simulation script to create a VCD file of the activity captured
during the specified interval. The power simulation script does the following:
1. Run for $VCD_SNAPSHOT_START_TIME
2. Enable VCD capture
3. Run for $VCD_SNAPSHOT_LENGTH
4. Disable VCD capture
Timing checks are disabled in this simulation script. The script saves VCD data in file
results/postlayout_postlayout.vcd for use with the PrimePower power analysis tool. Notice
that the VCD file is typically huge.
You can use Power > Show Power Analysis Driver to get a quick view of the total power
consumption of the circuit. Switch the view mode from Show by type to Show by predefined
groups to see the contribution of different structures. This information is also in the report file.
The command Power > New Power Design Map > Total Power Density shows a "heatmap"
that represents all components’ and hierarchical modules' power density by the size and color of
its rectangle.
The command Power > New Power Design Map > Total Power (or use the drop down list) to
find out the component that has the highest power consumption.
The “toggle coverage” map mode can be used to make sure that state changes were recorded
in all parts of the circuit so that you can rely on the power estimates.
PrimePower also opens a power waveform viewer that shows the power consumption as a
function of time as recorded in the simulation. The script also saves the waveform view as an
image in reports/8_wv_audioport_power.png. You can create your own screen dumps with
WaveView > Dump Screen. The image below shows an example of the default dump that
presents the complete dataset. Each waveform represents one of the top-level modules' power
consumption as a function of time.
4.8. Design Optimization
If you have negative setup slack in the design, you can try these additional settings:
if { $EDA_TOOL == "Design-Compiler" } {
set_ungroup control_unit_1 false
set_ungroup dsp_unit_1 false
set_ungroup i2s_unit_1 false
set_ungroup cdc_unit_1 false
}
2. Increase the cell density setting in 0_setup_audioport.tcl that determines the floorplan
size Innovus uses. Increasing density makes the silicon area smaller but makes routing
more difficult.