SlideShare a Scribd company logo
DV Club, Boston
Experiences with SystemC
Design Verification Using
SystemC
Greg Tierney
Presented to
DV Club, Boston
March 5, 2007
DV Club, Boston
Experiences with SystemC
About Avid
Invented digital video editing
Headquartered in Tewksbury
– http://www.avid.com/company/
Products
– Film/Video Editing and
Finishing
– Audio
– Broadcast
– Animation
– Storage & Workgroups
– Digital Asset and Production
Management
Services
– Support
– Training
– Consulting
DV Club, Boston
Experiences with SystemC
Agenda
What is SystemC?
Why did Avid choose to use SystemC?
DV problems solved by SystemC.
Summary
DV Club, Boston
Experiences with SystemC
What is SystemC?
Provides hardware constructs and a simulation kernel
for C++
It is a class library
– And it is a language standard (IEEE 1666TM 2005)
It has utilities and constructs
– Data types, ports, channels, processes
Adopted by different disciplines
– Architectural Modeling (SoC, performance)
– DV (RTL simulation, HW/SW co-verification)
– Synthesis
It is open source (OSCI)
– http://www.systemc.org
DV Club, Boston
Experiences with SystemC
Why Avid Chose SystemC
Enhanced existing C++ DV code
– Replaced an unreliable in-house framework
• Signal encapsulation
• Thread management
• Random seed management
– Smooth transition from C++ to SystemC
Tool availability
– Single kernel multi-language simulator
Industry acceptance
Low cost
Came with built-in verification capabilities
DV Club, Boston
Experiences with SystemC
Agenda
What is SystemC?
Why did Avid choose to use SystemC?
DV problems solved by SystemC.
Summary
DV Club, Boston
Experiences with SystemC
Crossing Language Boundaries
Connect an entire HDL module to the
testbench.
– Wrap the module with a SystemC class
(sc_foreign_module).
– Provide a string mapping for each port.
Connect a foreign signal anywhere in the
hierarchy.
– Bind a sc_signal (observe_foreign_signal).
– Provide a string of hierarchical path to wire or reg.
DV Club, Boston
Experiences with SystemC
Code Examples
SC_MODULE(MyVTB)
{
public:
SC_CTOR(MyVTB) :
MyDUTInst(“MyDUTInst”, “MyDUT”),
MyMonitorInst(“MyMonitorInst”,
“MyVTB.MyDUTInst.FooInst”)
{
MyDUTInst.reset(tb_reset);
MyDUTInst.clock(tb_clock);
MyDUTInst.AD(tb_AD);
}
private:
MyDUT MyDUTInst;
MyMonitor MyMonitorInst;
sc_signal<sc_logic> tb_reset;
sc_signal<sc_logic> tb_clock;
sc_signal<sc_lv<16> > tb_AD;
};
class MyDUT : public sc_foreign_module {
public:
sc_in<sc_logic> reset;
sc_in<sc_logic> clock;
sc_out<sc_lv<16> > AD;
MyDUT(sc_module_nam nm, const char* hdl_name)
: sc_foreign_module(nm, hdl_name),
reset(“reset”),
clock(“clock”),
AD(“AD”){}
};
class MyMonitor : public sc_module {
public:
MyMonitor(sc_module_name,
const string& path2DUT){
string path2sig = path2DUT + “.snoop”;
snoopSig_.observe_foreign_signal(path2sig);
SC_THREAD(threadT);
sensitive <<
snoopSig_.value_changed_event();
}
private:
sc_signal<sc_logic> snoopSig_;
void threadT();
};
DV Club, Boston
Experiences with SystemC
Issues with Binding
No clear standard for language boundary
resolution.
– Each vendor has its own implementation.
– Implementation we use doesn’t map arrays or
records (yet).
Supporting foreign interface requires two
pass compilation.
– First pass creates object files.
– Second pass builds a symbol library used in
design elaboration.
DV Club, Boston
Experiences with SystemC
SystemC Connections
Call a public method
via pointer to object
Connect sc_port to a
sc_export
Connect sc_port to a
channel
start()start()
outp inp
p
p
write() read()
DV Club, Boston
Experiences with SystemC
Code Examples
struct start_stop_if : public sc_interface
{
virtual void start()=0;
virtual void stop()=0;
};
class MyBFM :
public sc_module,
public virtual start_stop_if
{
public:
sc_in<sc_logic> Clock;
sc_out<sc_logic> Request;
sc_in<sc_lv<16> > AD;
tlm::tlm_put_port<MyX> MyXReceivePort;
sc_export<start_stop_if> StartStopExport;
void start();
void stop();
SC_CTOR(MyBFM){
StartStopExport(*this);
}
};
SC_MODULE(MyTest){
public:
sc_port<start_stop_if> bfm_port;
};
SC_MODULE(vtb){
public:
SC_CTOR(vtb);
private:
sc_signal<sc_logic> Clock;
sc_signal<sc_logic> Request;
sc_signal<sc_lv<16> > AD;
tlm::tlm_fifo<MyX> MyXReceiveChan;
MyTest MyTestInst;
MyBFM MyBFMInst;
};
vtb:vtb(sc_module_name) :
MyBFMInst(“MyBFMInst”), MyTestInst(“MyTestInst”)
{
MyBFMInst.Clock(Clock);
MyBFMInst.Request(Request);
MyBFMInst.AD(AD);
MyBFMInst.MyXReceivePort(MyXReceiveChan);
MyTestInst.bfm_port(MyBFMInst.StartStopExport);
}
DV Club, Boston
Experiences with SystemC
Issues with Connections
Construction and binding are separate steps.
– Ports must be public.
– Ports bound after modules and channels are constructed.
Binding uses “strict type checking”.
– Compilation will fail if type mismatch in the connection.
– Splitting a vector across multiple ports is complicated.
Binding errors detected at elaboration.
– Simulation should abort at runtime if a port is not bound.
– Need to assign attributes to port (e.g. # of connections).
DV Club, Boston
Experiences with SystemC
Randomization
Separate library dedicated to verification
constructs (SCV).
Robust, rich feature set for
randomization.
– Simple constraints (ranges and lists).
– Complex constraint solver.
– Thread-safe seeding.
– Extendible to custom object types.
DV Club, Boston
Experiences with SystemC
Randomization at Avid
SCV more than we needed.
– So, we use a subset of the features.
Provide a Tcl interface to apply constraints.
– Wrap scv_smart_ptr.
– Define string representations for simple
constraints.
– Recompilation not required to change constraints.
– Reapply constraints over course of simulation.
DV Club, Boston
Experiences with SystemC
Processes
Hardware is inherently parallel.
DV must be multi-threaded.
SystemC solves this with processes.
– Macros: SC_THREAD and SC_METHOD.
– Events, mutexes, semaphores.
– Dynamic processes (sc_spawn).
DV Club, Boston
Experiences with SystemC
Hierarchy
SystemC defines an object hierarchy.
– Relates objects (parent/child).
– Familiar to HDL design.
Avid DV defines a layer hierarchy.
– Relates connections.
– Familiar to communication stacks.
Issue: SystemC is not a methodology.
DV Club, Boston
Experiences with SystemC
Example Hierarchy
VTOP
VTEST
VTB
DUT
Snooper_BFM
Monitor Monitor
Commander_BFM
Driver Monitor
TX_BFM
Driver
RX_BFM
Monitor
TLM Agent
STIMGEN
Translator Reference Model
Analysis Agent
Scoreboard
Analysis Agent
Test
DV Club, Boston
Experiences with SystemC
Agenda
What is SystemC?
Why did Avid choose to use SystemC?
DV problems solved by SystemC.
Summary
DV Club, Boston
Experiences with SystemC
Additional Issues
Compile and link performance is disappointing.
– Overuse of C++ templates in library.
– Partially attributed to vendor implementation.
Libraries are huge.
Being a language standard has tool implications.
C++ learning curve.
– C++ code debug very different than HDL.
• Segmentation faults, stack traces, code stepping
Think like a HW engineer, code like a SW engineer.
DV Club, Boston
Experiences with SystemC
Avid’s Experience
Used reliably for nearly 3 years.
Runtime performance very satisfactory.
Provides opportunity to assist product
development beyond DV.
– Evaluate architectures and predict
performance.
– Create programmer’s view models for
emulation and HW/SW co-verification.
Ad

Recommended

ASIC VS FPGA.ppt
ASIC VS FPGA.ppt
gopakumar885691
 
02 General Purpose Input - Output on the Arduino
02 General Purpose Input - Output on the Arduino
Wingston
 
Fpga Knowledge
Fpga Knowledge
ranvirsingh
 
System-on-Chip Design, Embedded System Design Challenges
System-on-Chip Design, Embedded System Design Challenges
pboulet
 
Vlsi & embedded systems
Vlsi & embedded systems
Deepak Yadav
 
DESIGN AND SIMULATION OF DIFFERENT 8-BIT MULTIPLIERS USING VERILOG CODE BY SA...
DESIGN AND SIMULATION OF DIFFERENT 8-BIT MULTIPLIERS USING VERILOG CODE BY SA...
Saikiran Panjala
 
Esp8266 NodeMCU
Esp8266 NodeMCU
roadster43
 
Digital design with Systemc
Digital design with Systemc
Marc Engels
 
Routing.ppt
Routing.ppt
Sunesh N.V
 
Programmable logic device (PLD)
Programmable logic device (PLD)
Sɐɐp ɐɥɯǝp
 
FPGA Hardware Accelerator for Machine Learning
FPGA Hardware Accelerator for Machine Learning
Dr. Swaminathan Kathirvel
 
Cadence P-cell tutorial
Cadence P-cell tutorial
Michael Lee
 
Design challenges in embedded systems
Design challenges in embedded systems
mahalakshmimalini
 
Creating Your Own PCI Express System Using FPGAs: Embedded World 2010
Creating Your Own PCI Express System Using FPGAs: Embedded World 2010
Altera Corporation
 
Morello Technology Demonstrator Hardware Overview - Mark Inskip, Arm
Morello Technology Demonstrator Hardware Overview - Mark Inskip, Arm
KTN
 
ASIC Design Flow | Physical Design | VLSI
ASIC Design Flow | Physical Design | VLSI
Jayant Suthar
 
System on Chip (SoC)
System on Chip (SoC)
Dimas Ruliandi
 
Serial Communication Interfaces
Serial Communication Interfaces
anishgoel
 
Arm cortex-m4 programmer model
Arm cortex-m4 programmer model
Mohammed Gomaa
 
Asic
Asic
rajeevkr35
 
FPGAs and Machine Learning
FPGAs and Machine Learning
inside-BigData.com
 
testing
testing
Ram Ji D R
 
ucOS
ucOS
Ramasubbu .P
 
NIOS II Processor.ppt
NIOS II Processor.ppt
Atef46
 
Nodemcu - introduction
Nodemcu - introduction
Michal Sedlak
 
Arm processor architecture awareness session pi technologies
Arm processor architecture awareness session pi technologies
PiTechnologies
 
Gate-Level Simulation Methodology Improving Gate-Level Simulation Performance
Gate-Level Simulation Methodology Improving Gate-Level Simulation Performance
suddentrike2
 
Deep Dive into the AOSP
Deep Dive into the AOSP
Dr. Ketan Parmar
 
Tierney bq207
Tierney bq207
Obsidian Software
 
Presentation on Behavioral Synthesis & SystemC
Presentation on Behavioral Synthesis & SystemC
Mukit Ahmed Chowdhury
 

More Related Content

What's hot (20)

Routing.ppt
Routing.ppt
Sunesh N.V
 
Programmable logic device (PLD)
Programmable logic device (PLD)
Sɐɐp ɐɥɯǝp
 
FPGA Hardware Accelerator for Machine Learning
FPGA Hardware Accelerator for Machine Learning
Dr. Swaminathan Kathirvel
 
Cadence P-cell tutorial
Cadence P-cell tutorial
Michael Lee
 
Design challenges in embedded systems
Design challenges in embedded systems
mahalakshmimalini
 
Creating Your Own PCI Express System Using FPGAs: Embedded World 2010
Creating Your Own PCI Express System Using FPGAs: Embedded World 2010
Altera Corporation
 
Morello Technology Demonstrator Hardware Overview - Mark Inskip, Arm
Morello Technology Demonstrator Hardware Overview - Mark Inskip, Arm
KTN
 
ASIC Design Flow | Physical Design | VLSI
ASIC Design Flow | Physical Design | VLSI
Jayant Suthar
 
System on Chip (SoC)
System on Chip (SoC)
Dimas Ruliandi
 
Serial Communication Interfaces
Serial Communication Interfaces
anishgoel
 
Arm cortex-m4 programmer model
Arm cortex-m4 programmer model
Mohammed Gomaa
 
Asic
Asic
rajeevkr35
 
FPGAs and Machine Learning
FPGAs and Machine Learning
inside-BigData.com
 
testing
testing
Ram Ji D R
 
ucOS
ucOS
Ramasubbu .P
 
NIOS II Processor.ppt
NIOS II Processor.ppt
Atef46
 
Nodemcu - introduction
Nodemcu - introduction
Michal Sedlak
 
Arm processor architecture awareness session pi technologies
Arm processor architecture awareness session pi technologies
PiTechnologies
 
Gate-Level Simulation Methodology Improving Gate-Level Simulation Performance
Gate-Level Simulation Methodology Improving Gate-Level Simulation Performance
suddentrike2
 
Deep Dive into the AOSP
Deep Dive into the AOSP
Dr. Ketan Parmar
 
Programmable logic device (PLD)
Programmable logic device (PLD)
Sɐɐp ɐɥɯǝp
 
FPGA Hardware Accelerator for Machine Learning
FPGA Hardware Accelerator for Machine Learning
Dr. Swaminathan Kathirvel
 
Cadence P-cell tutorial
Cadence P-cell tutorial
Michael Lee
 
Design challenges in embedded systems
Design challenges in embedded systems
mahalakshmimalini
 
Creating Your Own PCI Express System Using FPGAs: Embedded World 2010
Creating Your Own PCI Express System Using FPGAs: Embedded World 2010
Altera Corporation
 
Morello Technology Demonstrator Hardware Overview - Mark Inskip, Arm
Morello Technology Demonstrator Hardware Overview - Mark Inskip, Arm
KTN
 
ASIC Design Flow | Physical Design | VLSI
ASIC Design Flow | Physical Design | VLSI
Jayant Suthar
 
Serial Communication Interfaces
Serial Communication Interfaces
anishgoel
 
Arm cortex-m4 programmer model
Arm cortex-m4 programmer model
Mohammed Gomaa
 
NIOS II Processor.ppt
NIOS II Processor.ppt
Atef46
 
Nodemcu - introduction
Nodemcu - introduction
Michal Sedlak
 
Arm processor architecture awareness session pi technologies
Arm processor architecture awareness session pi technologies
PiTechnologies
 
Gate-Level Simulation Methodology Improving Gate-Level Simulation Performance
Gate-Level Simulation Methodology Improving Gate-Level Simulation Performance
suddentrike2
 

Similar to Design Verification Using SystemC (20)

Tierney bq207
Tierney bq207
Obsidian Software
 
Presentation on Behavioral Synthesis & SystemC
Presentation on Behavioral Synthesis & SystemC
Mukit Ahmed Chowdhury
 
Firmware Co-Design & Development for IP Cores in C++/SystemC using Verilator
Firmware Co-Design & Development for IP Cores in C++/SystemC using Verilator
Seyed Amir Alavi
 
A SYSTEMC/SIMULINK CO-SIMULATION ENVIRONMENT OF THE JPEG ALGORITHM
A SYSTEMC/SIMULINK CO-SIMULATION ENVIRONMENT OF THE JPEG ALGORITHM
VLSICS Design
 
Architecting Domain-Specific Languages
Architecting Domain-Specific Languages
Markus Voelter
 
FUSION APU & TRENDS/ CHALLENGES IN FUTURE SoC DESIGN
FUSION APU & TRENDS/ CHALLENGES IN FUTURE SoC DESIGN
Pankaj Singh
 
Systems on chip (so c)
Systems on chip (so c)
sandeep1721
 
PhD Slides
PhD Slides
Màrius Montón
 
Introduction to Systemc presentation.pptx
Introduction to Systemc presentation.pptx
AjayLobo1
 
System on Chip Design and Modelling Dr. David J Greaves
System on Chip Design and Modelling Dr. David J Greaves
Satya Harish
 
Getting started with RISC-V verification what's next after compliance testing
Getting started with RISC-V verification what's next after compliance testing
RISC-V International
 
Security and functional safety
Security and functional safety
RISC-V International
 
The Cortex-A15 Verification Story
The Cortex-A15 Verification Story
DVClub
 
Virtualization Technology for Test Automation
Virtualization Technology for Test Automation
extentconf Tsoy
 
Virtualization Technology for Test Automation
Virtualization Technology for Test Automation
Iosif Itkin
 
Automated Formal Verification of SystemC/C++ High-Level Synthesis Models
Automated Formal Verification of SystemC/C++ High-Level Synthesis Models
Sergio Marchese
 
Educating the computer architects of tomorrow's critical systems with RISC-V
Educating the computer architects of tomorrow's critical systems with RISC-V
RISC-V International
 
Zehr dv club_12052006
Zehr dv club_12052006
Obsidian Software
 
Virtual platform
Virtual platform
sean chen
 
DvClub 2102 tlm based software control of uvcs for vertical verification re...
DvClub 2102 tlm based software control of uvcs for vertical verification re...
Amit Bhandu
 
Presentation on Behavioral Synthesis & SystemC
Presentation on Behavioral Synthesis & SystemC
Mukit Ahmed Chowdhury
 
Firmware Co-Design & Development for IP Cores in C++/SystemC using Verilator
Firmware Co-Design & Development for IP Cores in C++/SystemC using Verilator
Seyed Amir Alavi
 
A SYSTEMC/SIMULINK CO-SIMULATION ENVIRONMENT OF THE JPEG ALGORITHM
A SYSTEMC/SIMULINK CO-SIMULATION ENVIRONMENT OF THE JPEG ALGORITHM
VLSICS Design
 
Architecting Domain-Specific Languages
Architecting Domain-Specific Languages
Markus Voelter
 
FUSION APU & TRENDS/ CHALLENGES IN FUTURE SoC DESIGN
FUSION APU & TRENDS/ CHALLENGES IN FUTURE SoC DESIGN
Pankaj Singh
 
Systems on chip (so c)
Systems on chip (so c)
sandeep1721
 
Introduction to Systemc presentation.pptx
Introduction to Systemc presentation.pptx
AjayLobo1
 
System on Chip Design and Modelling Dr. David J Greaves
System on Chip Design and Modelling Dr. David J Greaves
Satya Harish
 
Getting started with RISC-V verification what's next after compliance testing
Getting started with RISC-V verification what's next after compliance testing
RISC-V International
 
The Cortex-A15 Verification Story
The Cortex-A15 Verification Story
DVClub
 
Virtualization Technology for Test Automation
Virtualization Technology for Test Automation
extentconf Tsoy
 
Virtualization Technology for Test Automation
Virtualization Technology for Test Automation
Iosif Itkin
 
Automated Formal Verification of SystemC/C++ High-Level Synthesis Models
Automated Formal Verification of SystemC/C++ High-Level Synthesis Models
Sergio Marchese
 
Educating the computer architects of tomorrow's critical systems with RISC-V
Educating the computer architects of tomorrow's critical systems with RISC-V
RISC-V International
 
Virtual platform
Virtual platform
sean chen
 
DvClub 2102 tlm based software control of uvcs for vertical verification re...
DvClub 2102 tlm based software control of uvcs for vertical verification re...
Amit Bhandu
 
Ad

More from DVClub (20)

IP Reuse Impact on Design Verification Management Across the Enterprise
IP Reuse Impact on Design Verification Management Across the Enterprise
DVClub
 
Cisco Base Environment Overview
Cisco Base Environment Overview
DVClub
 
Intel Xeon Pre-Silicon Validation: Introduction and Challenges
Intel Xeon Pre-Silicon Validation: Introduction and Challenges
DVClub
 
Verification of Graphics ASICs (Part II)
Verification of Graphics ASICs (Part II)
DVClub
 
Verification of Graphics ASICs (Part I)
Verification of Graphics ASICs (Part I)
DVClub
 
Stop Writing Assertions! Efficient Verification Methodology
Stop Writing Assertions! Efficient Verification Methodology
DVClub
 
Validating Next Generation CPUs
Validating Next Generation CPUs
DVClub
 
Verification Automation Using IPXACT
Verification Automation Using IPXACT
DVClub
 
Validation and Design in a Small Team Environment
Validation and Design in a Small Team Environment
DVClub
 
Trends in Mixed Signal Validation
Trends in Mixed Signal Validation
DVClub
 
Verification In A Global Design Community
Verification In A Global Design Community
DVClub
 
Verification Strategy for PCI-Express
Verification Strategy for PCI-Express
DVClub
 
SystemVerilog Assertions (SVA) in the Design/Verification Process
SystemVerilog Assertions (SVA) in the Design/Verification Process
DVClub
 
Efficiency Through Methodology
Efficiency Through Methodology
DVClub
 
Pre-Si Verification for Post-Si Validation
Pre-Si Verification for Post-Si Validation
DVClub
 
OpenSPARC T1 Processor
OpenSPARC T1 Processor
DVClub
 
Intel Atom Processor Pre-Silicon Verification Experience
Intel Atom Processor Pre-Silicon Verification Experience
DVClub
 
Using Assertions in AMS Verification
Using Assertions in AMS Verification
DVClub
 
Low-Power Design and Verification
Low-Power Design and Verification
DVClub
 
UVM Update: Register Package
UVM Update: Register Package
DVClub
 
IP Reuse Impact on Design Verification Management Across the Enterprise
IP Reuse Impact on Design Verification Management Across the Enterprise
DVClub
 
Cisco Base Environment Overview
Cisco Base Environment Overview
DVClub
 
Intel Xeon Pre-Silicon Validation: Introduction and Challenges
Intel Xeon Pre-Silicon Validation: Introduction and Challenges
DVClub
 
Verification of Graphics ASICs (Part II)
Verification of Graphics ASICs (Part II)
DVClub
 
Verification of Graphics ASICs (Part I)
Verification of Graphics ASICs (Part I)
DVClub
 
Stop Writing Assertions! Efficient Verification Methodology
Stop Writing Assertions! Efficient Verification Methodology
DVClub
 
Validating Next Generation CPUs
Validating Next Generation CPUs
DVClub
 
Verification Automation Using IPXACT
Verification Automation Using IPXACT
DVClub
 
Validation and Design in a Small Team Environment
Validation and Design in a Small Team Environment
DVClub
 
Trends in Mixed Signal Validation
Trends in Mixed Signal Validation
DVClub
 
Verification In A Global Design Community
Verification In A Global Design Community
DVClub
 
Verification Strategy for PCI-Express
Verification Strategy for PCI-Express
DVClub
 
SystemVerilog Assertions (SVA) in the Design/Verification Process
SystemVerilog Assertions (SVA) in the Design/Verification Process
DVClub
 
Efficiency Through Methodology
Efficiency Through Methodology
DVClub
 
Pre-Si Verification for Post-Si Validation
Pre-Si Verification for Post-Si Validation
DVClub
 
OpenSPARC T1 Processor
OpenSPARC T1 Processor
DVClub
 
Intel Atom Processor Pre-Silicon Verification Experience
Intel Atom Processor Pre-Silicon Verification Experience
DVClub
 
Using Assertions in AMS Verification
Using Assertions in AMS Verification
DVClub
 
Low-Power Design and Verification
Low-Power Design and Verification
DVClub
 
UVM Update: Register Package
UVM Update: Register Package
DVClub
 
Ad

Recently uploaded (20)

Enhance GitHub Copilot using MCP - Enterprise version.pdf
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Nilesh Gule
 
2025_06_18 - OpenMetadata Community Meeting.pdf
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
 
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance
 
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
Edge AI and Vision Alliance
 
10 Key Challenges for AI within the EU Data Protection Framework.pdf
10 Key Challenges for AI within the EU Data Protection Framework.pdf
Priyanka Aash
 
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
Securing AI - There Is No Try, Only Do!.pdf
Securing AI - There Is No Try, Only Do!.pdf
Priyanka Aash
 
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
Priyanka Aash
 
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Impelsys Inc.
 
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
 
MuleSoft for AgentForce : Topic Center and API Catalog
MuleSoft for AgentForce : Topic Center and API Catalog
shyamraj55
 
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Alliance
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
Priyanka Aash
 
AI VIDEO MAGAZINE - June 2025 - r/aivideo
AI VIDEO MAGAZINE - June 2025 - r/aivideo
1pcity Studios, Inc
 
The Future of Data, AI, and AR: Innovation Inspired by You.pdf
The Future of Data, AI, and AR: Innovation Inspired by You.pdf
Safe Software
 
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
 
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Nilesh Gule
 
2025_06_18 - OpenMetadata Community Meeting.pdf
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
 
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance
 
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
Edge AI and Vision Alliance
 
10 Key Challenges for AI within the EU Data Protection Framework.pdf
10 Key Challenges for AI within the EU Data Protection Framework.pdf
Priyanka Aash
 
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
Securing AI - There Is No Try, Only Do!.pdf
Securing AI - There Is No Try, Only Do!.pdf
Priyanka Aash
 
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
Priyanka Aash
 
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Impelsys Inc.
 
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
 
MuleSoft for AgentForce : Topic Center and API Catalog
MuleSoft for AgentForce : Topic Center and API Catalog
shyamraj55
 
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Alliance
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
Priyanka Aash
 
AI VIDEO MAGAZINE - June 2025 - r/aivideo
AI VIDEO MAGAZINE - June 2025 - r/aivideo
1pcity Studios, Inc
 
The Future of Data, AI, and AR: Innovation Inspired by You.pdf
The Future of Data, AI, and AR: Innovation Inspired by You.pdf
Safe Software
 
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
 

Design Verification Using SystemC

  • 1. DV Club, Boston Experiences with SystemC Design Verification Using SystemC Greg Tierney Presented to DV Club, Boston March 5, 2007
  • 2. DV Club, Boston Experiences with SystemC About Avid Invented digital video editing Headquartered in Tewksbury – http://www.avid.com/company/ Products – Film/Video Editing and Finishing – Audio – Broadcast – Animation – Storage & Workgroups – Digital Asset and Production Management Services – Support – Training – Consulting
  • 3. DV Club, Boston Experiences with SystemC Agenda What is SystemC? Why did Avid choose to use SystemC? DV problems solved by SystemC. Summary
  • 4. DV Club, Boston Experiences with SystemC What is SystemC? Provides hardware constructs and a simulation kernel for C++ It is a class library – And it is a language standard (IEEE 1666TM 2005) It has utilities and constructs – Data types, ports, channels, processes Adopted by different disciplines – Architectural Modeling (SoC, performance) – DV (RTL simulation, HW/SW co-verification) – Synthesis It is open source (OSCI) – http://www.systemc.org
  • 5. DV Club, Boston Experiences with SystemC Why Avid Chose SystemC Enhanced existing C++ DV code – Replaced an unreliable in-house framework • Signal encapsulation • Thread management • Random seed management – Smooth transition from C++ to SystemC Tool availability – Single kernel multi-language simulator Industry acceptance Low cost Came with built-in verification capabilities
  • 6. DV Club, Boston Experiences with SystemC Agenda What is SystemC? Why did Avid choose to use SystemC? DV problems solved by SystemC. Summary
  • 7. DV Club, Boston Experiences with SystemC Crossing Language Boundaries Connect an entire HDL module to the testbench. – Wrap the module with a SystemC class (sc_foreign_module). – Provide a string mapping for each port. Connect a foreign signal anywhere in the hierarchy. – Bind a sc_signal (observe_foreign_signal). – Provide a string of hierarchical path to wire or reg.
  • 8. DV Club, Boston Experiences with SystemC Code Examples SC_MODULE(MyVTB) { public: SC_CTOR(MyVTB) : MyDUTInst(“MyDUTInst”, “MyDUT”), MyMonitorInst(“MyMonitorInst”, “MyVTB.MyDUTInst.FooInst”) { MyDUTInst.reset(tb_reset); MyDUTInst.clock(tb_clock); MyDUTInst.AD(tb_AD); } private: MyDUT MyDUTInst; MyMonitor MyMonitorInst; sc_signal<sc_logic> tb_reset; sc_signal<sc_logic> tb_clock; sc_signal<sc_lv<16> > tb_AD; }; class MyDUT : public sc_foreign_module { public: sc_in<sc_logic> reset; sc_in<sc_logic> clock; sc_out<sc_lv<16> > AD; MyDUT(sc_module_nam nm, const char* hdl_name) : sc_foreign_module(nm, hdl_name), reset(“reset”), clock(“clock”), AD(“AD”){} }; class MyMonitor : public sc_module { public: MyMonitor(sc_module_name, const string& path2DUT){ string path2sig = path2DUT + “.snoop”; snoopSig_.observe_foreign_signal(path2sig); SC_THREAD(threadT); sensitive << snoopSig_.value_changed_event(); } private: sc_signal<sc_logic> snoopSig_; void threadT(); };
  • 9. DV Club, Boston Experiences with SystemC Issues with Binding No clear standard for language boundary resolution. – Each vendor has its own implementation. – Implementation we use doesn’t map arrays or records (yet). Supporting foreign interface requires two pass compilation. – First pass creates object files. – Second pass builds a symbol library used in design elaboration.
  • 10. DV Club, Boston Experiences with SystemC SystemC Connections Call a public method via pointer to object Connect sc_port to a sc_export Connect sc_port to a channel start()start() outp inp p p write() read()
  • 11. DV Club, Boston Experiences with SystemC Code Examples struct start_stop_if : public sc_interface { virtual void start()=0; virtual void stop()=0; }; class MyBFM : public sc_module, public virtual start_stop_if { public: sc_in<sc_logic> Clock; sc_out<sc_logic> Request; sc_in<sc_lv<16> > AD; tlm::tlm_put_port<MyX> MyXReceivePort; sc_export<start_stop_if> StartStopExport; void start(); void stop(); SC_CTOR(MyBFM){ StartStopExport(*this); } }; SC_MODULE(MyTest){ public: sc_port<start_stop_if> bfm_port; }; SC_MODULE(vtb){ public: SC_CTOR(vtb); private: sc_signal<sc_logic> Clock; sc_signal<sc_logic> Request; sc_signal<sc_lv<16> > AD; tlm::tlm_fifo<MyX> MyXReceiveChan; MyTest MyTestInst; MyBFM MyBFMInst; }; vtb:vtb(sc_module_name) : MyBFMInst(“MyBFMInst”), MyTestInst(“MyTestInst”) { MyBFMInst.Clock(Clock); MyBFMInst.Request(Request); MyBFMInst.AD(AD); MyBFMInst.MyXReceivePort(MyXReceiveChan); MyTestInst.bfm_port(MyBFMInst.StartStopExport); }
  • 12. DV Club, Boston Experiences with SystemC Issues with Connections Construction and binding are separate steps. – Ports must be public. – Ports bound after modules and channels are constructed. Binding uses “strict type checking”. – Compilation will fail if type mismatch in the connection. – Splitting a vector across multiple ports is complicated. Binding errors detected at elaboration. – Simulation should abort at runtime if a port is not bound. – Need to assign attributes to port (e.g. # of connections).
  • 13. DV Club, Boston Experiences with SystemC Randomization Separate library dedicated to verification constructs (SCV). Robust, rich feature set for randomization. – Simple constraints (ranges and lists). – Complex constraint solver. – Thread-safe seeding. – Extendible to custom object types.
  • 14. DV Club, Boston Experiences with SystemC Randomization at Avid SCV more than we needed. – So, we use a subset of the features. Provide a Tcl interface to apply constraints. – Wrap scv_smart_ptr. – Define string representations for simple constraints. – Recompilation not required to change constraints. – Reapply constraints over course of simulation.
  • 15. DV Club, Boston Experiences with SystemC Processes Hardware is inherently parallel. DV must be multi-threaded. SystemC solves this with processes. – Macros: SC_THREAD and SC_METHOD. – Events, mutexes, semaphores. – Dynamic processes (sc_spawn).
  • 16. DV Club, Boston Experiences with SystemC Hierarchy SystemC defines an object hierarchy. – Relates objects (parent/child). – Familiar to HDL design. Avid DV defines a layer hierarchy. – Relates connections. – Familiar to communication stacks. Issue: SystemC is not a methodology.
  • 17. DV Club, Boston Experiences with SystemC Example Hierarchy VTOP VTEST VTB DUT Snooper_BFM Monitor Monitor Commander_BFM Driver Monitor TX_BFM Driver RX_BFM Monitor TLM Agent STIMGEN Translator Reference Model Analysis Agent Scoreboard Analysis Agent Test
  • 18. DV Club, Boston Experiences with SystemC Agenda What is SystemC? Why did Avid choose to use SystemC? DV problems solved by SystemC. Summary
  • 19. DV Club, Boston Experiences with SystemC Additional Issues Compile and link performance is disappointing. – Overuse of C++ templates in library. – Partially attributed to vendor implementation. Libraries are huge. Being a language standard has tool implications. C++ learning curve. – C++ code debug very different than HDL. • Segmentation faults, stack traces, code stepping Think like a HW engineer, code like a SW engineer.
  • 20. DV Club, Boston Experiences with SystemC Avid’s Experience Used reliably for nearly 3 years. Runtime performance very satisfactory. Provides opportunity to assist product development beyond DV. – Evaluate architectures and predict performance. – Create programmer’s view models for emulation and HW/SW co-verification.