SlideShare uma empresa Scribd logo
1 de 17
Automating the
Verification
A Synergy Between Jenkins and vManager
Tsvi Mostovicz
Verification Engineer
Board design
Automating the verification 2
• About RAD
• The Problems We Faced
• A Lesson from the Software Development Domain - Jenkins
• Regressions and Coverage - Cadence vManager
• Using Jenkins Together with vManager
• Solutions
Agenda
Automating the verification 3
• Telecommunications access solutions provider
• Founded in 1981, privately owned
• Global company
• R&D located in Israel, Tel Aviv and Beersheba
• Most of our products are based on FPGAs
About RAD
Automating the verification 4
Critical Infrastructure
Our Customers
Mobile | Business | Wholesale Utilities| Transportation| Government
Service Providers
Automating the verification 5
• FPGA relies heavily on lab testing: the design is fixed, but the verification is not always
updated
• Regression data is not based on the main source code repository
• Manually running regressions takes a lot of time and effort
• No transparency of the regression data
The Problems We Faced
Automating the verification 6
A Lesson from Software Development - Jenkins
• Continuous integration systems have solved this issue in the software realm
• Every change to the source repository triggers compilation, testing and publishing
of binaries
Jenkins
• An open-source tool, originally developed as a side project by Sun under the name Hudson,
it was forked after issues with Oracle over control of the project
Allows triggering of jobs based on a variety of factors
Jobs can be as simple as a simple shell script
Stores reports/logs, can send notifications to any
imaginable consumer
Automating the verification 7
• Regression is based on VSIF input file
• Programmatic access via the vAPI
Regressions and Coverage - Cadence vManager
• Manage regressions:
– Run regression
– Analyze metrics
– Track progress
• Client-server model
• Database backend
Automating the verification 8
Using Jenkins Together with vManager
• We’re limited by the amount of licenses and hardware resources availability during the day 
only compile the sources on commits to source control
– Protection from non-compiling sources
• Jenkins triggers vManager to run nightly regressions on last known good compilation
– We always have a running regression
– Coverage is continually being aggregated
– Jenkins can generate the VSIF (Verification Session Input File) on the fly for vManager
– Jenkins uses vAPI to “talk” to vManager’s database
Automating the verification 9
Source
control
Mail to user
Compile
Env Y
Compile
Env X
Solution – Detailed Flow
// dut.sv
module rx_mac();
...
- wire bla;
+ reg bla;
Compile
Env X
`FEATURE_Z
Regression
Env X
Regression
Env X
`FEATURE_Z
No
testlist.vsif
found
Check for testlist.vsif
@19:00 on
weekdays trigger
appropriate
regressions Generate full vsif and
send regression end
to vManager vManager
Env X session
@7:00 on weekdays
get list of nightly
regressions from
vManager
Regression
report
Env X
User’s debug
environment
Debug test
Mail to user
VSIF
vAPI vAPI
vAPI
Stop list of matching nightly regressions,
cleanup logs and send list to Jenkins
User Jenkins vManager
Automating the verification 10
Solution – Creating a VSIF on the Fly
• The description tag can hold HTML tags
– Use any formatting (eg. bold, underline)
– Add hyperlinks to other sources of information
– Very useful for reports
• Using #include allows separation of responsibilities:
– Verification owner maintains simple test list
– Automation takes care of the rest
• Using #define allows different tests to be run depending on design capabilities
Automating the verification 11
session eth_ntu.5.2.0.ETX_2I.tm_end2end_nightly {
top_dir : /home/jenkins/regressions;
queuing_policy : round_robin;
output_mode : log_only;
description : <text><p>${DESCRIPTION_HTML}</p>
<p>Defines used in build:<ul>${DEFINES_DESCRIPTION}</ul></p>
<p>Changes since last regression:<ul>${CHANGES}</ul></p></text>;
};
group tests {
pre_run_script : "cp -f $ENV(WORKSPACE)/{*.tcl,*.hex,*.mif,*.dat,project_specific_defines.v}
$DIR(run)/ 2>/dev/null || :";
run_script : "i_run.sh -comp_path=$ENV(WORKSPACE) ${ENV_TYPE} -seed=$ATTR(seed) $ATTR(sim_args)
${ENVIRONMENT} $ATTR(test_name)";
scan_script : "vm_scan.pl ${ENV_FILTER} ius.flt shell.flt";
run_mode : batch;
seed : random;
count : ${COUNT};
timeout : 15000;
#include "testlist.vsif"
};
VSIF Example - Automation
Automating the verification 12
VSIF Example – Test List
#ifdef ETX_2I
test tm_end2end_2i_test {};
#elif ETX_2I_B
test tm_end2end_2i_b_test {};
#elif ETX_2I_B_PLUS
test tm_end2end_2i_b_plus_test {};
#endif
test test_mem_map {
count : 1;
};
Automating the verification 13
Solution – Using vAPI with Python Requests Library
• Using Python’s requests library requires much less overhead than using Cadence’s Jenkins plugin 
• vAPI access is done by sending a “filter” via a HTTP POST request
• Example: Getting all nightly regressions
nightly_filter = { "filter":
{"@c" : ".ChainedFilter",
"chain" : [
{"operand" : "GREATER_THAN",
"@c" : ".AttValueFilter",
"attValue": int(time_started.strftime("%s")) * 1000,
"attName" : "start_time"},
{"@c" : ".ExpressionFilter",
"exp" : "nightly",
"attName" : "name"} ],
"condition" : "AND"},
"projection":{"selection":["name"]} }
session_list = requests.post(url + 'sessions/list', json=nightly_filter, auth=cred)
Filters are simple
Python dictionaries
Just enter the correct
key/value pair to get
what you want
Automating the verification 14
Cadence’s Jenkins Plugin Wishlist
• Really need to fix: usability
– Allow usage of environment variables
– Do NOT force file names upon the user
• Nice to have: help with vAPI
– Dynamic form fill for generating a request
• Wow, you rock:
– Build step: run regression  help me create my VSIF
– Return xUnit formatted results to Jenkins
Automating the verification 15
• Jenkins - https://jenkins.io
• vManager – Cadence Help (15.2)
– Incisive vManager
• vAPI – Cadence Help (15.2)
– Incisive Enterprise Simulator – Metric Driven Verification – Incisive vManager – vManager API
• Python request library - http://docs.python-requests.org
Links
After
• Instant knowledge on compilation
breakage
• Coverage is constantly being
aggregated
• Full visibility into state of environment
Key Takeaways
Before
• Spend a lot of time getting
environment to compile
• Unused resources of idle machines
• No visibility into the current state of
the environment
• Effort required: 1 engineer X 4 months
• Time until fix of compilation breakage: 3-4 months  2 hours – 2-3 days
• Time to find bug based on a “small” fix: Unknown  1 day
Tsvi Mostovicz
Verification Engineer
tsvi_m@rad.com

Mais conteúdo relacionado

Mais procurados

Jenkins Pipeline meets Oracle
Jenkins Pipeline meets OracleJenkins Pipeline meets Oracle
Jenkins Pipeline meets OracleOliver Lemm
 
Ci jenkins maven svn
Ci jenkins maven svnCi jenkins maven svn
Ci jenkins maven svnAnkur Goyal
 
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtJenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtMark Waite
 
Jenkins review buddy
Jenkins review buddyJenkins review buddy
Jenkins review buddyAske Olsson
 
Pipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingPipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingSwapnil Jadhav
 
Part of the DLM Story: Automated database build and test with TeamCity
Part of the DLM Story: Automated database build and test with TeamCityPart of the DLM Story: Automated database build and test with TeamCity
Part of the DLM Story: Automated database build and test with TeamCityRed Gate Software
 
Hudson: Your robotic butler
Hudson: Your robotic butlerHudson: Your robotic butler
Hudson: Your robotic butlerSteven Merrill
 
JavaOne 2016 - Pipeline as code
JavaOne 2016 - Pipeline as codeJavaOne 2016 - Pipeline as code
JavaOne 2016 - Pipeline as codeBert Jan Schrijver
 
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 PipelineDelivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 PipelineSlawa Giterman
 
Tuenti Release Workflow v1.1
Tuenti Release Workflow v1.1Tuenti Release Workflow v1.1
Tuenti Release Workflow v1.1Tuenti
 
Intro to JavaScript Tooling in Visual Studio Code
Intro to JavaScript Tooling in Visual Studio CodeIntro to JavaScript Tooling in Visual Studio Code
Intro to JavaScript Tooling in Visual Studio CodeColdFusionConference
 
Version Control and Continuous Integration
Version Control and Continuous IntegrationVersion Control and Continuous Integration
Version Control and Continuous IntegrationGeff Henderson Chang
 
Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Michal Ziarnik
 
Symfony 2 under control
Symfony 2 under controlSymfony 2 under control
Symfony 2 under controlMax Romanovsky
 
Continuous Delivery Using Jenkins
Continuous Delivery Using JenkinsContinuous Delivery Using Jenkins
Continuous Delivery Using JenkinsCliffano Subagio
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefNathen Harvey
 
Jenkins Meetup Pune
Jenkins Meetup PuneJenkins Meetup Pune
Jenkins Meetup PuneUmesh Kumhar
 

Mais procurados (20)

Graphql usage
Graphql usageGraphql usage
Graphql usage
 
Jenkins
JenkinsJenkins
Jenkins
 
Jenkins Pipeline meets Oracle
Jenkins Pipeline meets OracleJenkins Pipeline meets Oracle
Jenkins Pipeline meets Oracle
 
Ci jenkins maven svn
Ci jenkins maven svnCi jenkins maven svn
Ci jenkins maven svn
 
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtJenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
 
Jenkins review buddy
Jenkins review buddyJenkins review buddy
Jenkins review buddy
 
Pipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingPipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of Testing
 
Part of the DLM Story: Automated database build and test with TeamCity
Part of the DLM Story: Automated database build and test with TeamCityPart of the DLM Story: Automated database build and test with TeamCity
Part of the DLM Story: Automated database build and test with TeamCity
 
Hudson: Your robotic butler
Hudson: Your robotic butlerHudson: Your robotic butler
Hudson: Your robotic butler
 
JavaOne 2016 - Pipeline as code
JavaOne 2016 - Pipeline as codeJavaOne 2016 - Pipeline as code
JavaOne 2016 - Pipeline as code
 
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 PipelineDelivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
 
Tuenti Release Workflow v1.1
Tuenti Release Workflow v1.1Tuenti Release Workflow v1.1
Tuenti Release Workflow v1.1
 
Intro to JavaScript Tooling in Visual Studio Code
Intro to JavaScript Tooling in Visual Studio CodeIntro to JavaScript Tooling in Visual Studio Code
Intro to JavaScript Tooling in Visual Studio Code
 
Version Control and Continuous Integration
Version Control and Continuous IntegrationVersion Control and Continuous Integration
Version Control and Continuous Integration
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2
 
Symfony 2 under control
Symfony 2 under controlSymfony 2 under control
Symfony 2 under control
 
Continuous Delivery Using Jenkins
Continuous Delivery Using JenkinsContinuous Delivery Using Jenkins
Continuous Delivery Using Jenkins
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
Jenkins Meetup Pune
Jenkins Meetup PuneJenkins Meetup Pune
Jenkins Meetup Pune
 

Destaque

Alimentos de denominación de origen
Alimentos de denominación de origenAlimentos de denominación de origen
Alimentos de denominación de origencarmenillueca
 
Twitter, presentació sore l'aplicació
Twitter, presentació sore l'aplicacióTwitter, presentació sore l'aplicació
Twitter, presentació sore l'aplicaciótianaalcinas
 
Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)maditabalnco
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsBarry Feldman
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome EconomyHelge Tennø
 

Destaque (6)

Ao34242247
Ao34242247Ao34242247
Ao34242247
 
Alimentos de denominación de origen
Alimentos de denominación de origenAlimentos de denominación de origen
Alimentos de denominación de origen
 
Twitter, presentació sore l'aplicació
Twitter, presentació sore l'aplicacióTwitter, presentació sore l'aplicació
Twitter, presentació sore l'aplicació
 
Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post Formats
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 

Semelhante a Automating Verification with Jenkins and vManager

Continuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with JenkinsContinuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with Jenkinsecubemarketing
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitisSteve Povilaitis
 
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Amazon Web Services
 
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...DevOps4Networks
 
Open Audit
Open AuditOpen Audit
Open Auditncspa
 
Nagios Conference 2014 - Mike Weber - Nagios Rapid Deployment Options
Nagios Conference 2014 - Mike Weber - Nagios Rapid Deployment OptionsNagios Conference 2014 - Mike Weber - Nagios Rapid Deployment Options
Nagios Conference 2014 - Mike Weber - Nagios Rapid Deployment OptionsNagios
 
Continuous Delivery Agiles 2014 Medellin
Continuous Delivery Agiles 2014 MedellinContinuous Delivery Agiles 2014 Medellin
Continuous Delivery Agiles 2014 MedellinDiego Garber
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using JenkinsRogue Wave Software
 
An Introduction to PowerShell for Security Assessments
An Introduction to PowerShell for Security AssessmentsAn Introduction to PowerShell for Security Assessments
An Introduction to PowerShell for Security AssessmentsEnclaveSecurity
 
Windows 2012 R2 Multi Server Management
Windows 2012 R2 Multi Server ManagementWindows 2012 R2 Multi Server Management
Windows 2012 R2 Multi Server ManagementSharkrit JOBBO
 
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...Postman
 
AWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for DevelopersAWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for DevelopersAmazon Web Services
 
JCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxJCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxGrace Jansen
 
Continuous Delivery - Automate & Build Better Software with Travis CI
Continuous Delivery - Automate & Build Better Software with Travis CIContinuous Delivery - Automate & Build Better Software with Travis CI
Continuous Delivery - Automate & Build Better Software with Travis CIwajrcs
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsMichael Lihs
 
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...Amazon Web Services
 

Semelhante a Automating Verification with Jenkins and vManager (20)

Continuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with JenkinsContinuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with Jenkins
 
Build Time Hacking
Build Time HackingBuild Time Hacking
Build Time Hacking
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
 
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
 
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
 
Devops architecture
Devops architectureDevops architecture
Devops architecture
 
Open Audit
Open AuditOpen Audit
Open Audit
 
Nagios Conference 2014 - Mike Weber - Nagios Rapid Deployment Options
Nagios Conference 2014 - Mike Weber - Nagios Rapid Deployment OptionsNagios Conference 2014 - Mike Weber - Nagios Rapid Deployment Options
Nagios Conference 2014 - Mike Weber - Nagios Rapid Deployment Options
 
Test automation proposal
Test automation proposalTest automation proposal
Test automation proposal
 
Continuous Delivery Agiles 2014 Medellin
Continuous Delivery Agiles 2014 MedellinContinuous Delivery Agiles 2014 Medellin
Continuous Delivery Agiles 2014 Medellin
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
 
An Introduction to PowerShell for Security Assessments
An Introduction to PowerShell for Security AssessmentsAn Introduction to PowerShell for Security Assessments
An Introduction to PowerShell for Security Assessments
 
Windows 2012 R2 Multi Server Management
Windows 2012 R2 Multi Server ManagementWindows 2012 R2 Multi Server Management
Windows 2012 R2 Multi Server Management
 
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...
 
AWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for DevelopersAWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for Developers
 
JCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxJCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptx
 
Continuous Delivery - Automate & Build Better Software with Travis CI
Continuous Delivery - Automate & Build Better Software with Travis CIContinuous Delivery - Automate & Build Better Software with Travis CI
Continuous Delivery - Automate & Build Better Software with Travis CI
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
 
Automated Testing in DevOps
Automated Testing in DevOpsAutomated Testing in DevOps
Automated Testing in DevOps
 
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
 

Automating Verification with Jenkins and vManager

  • 1. Automating the Verification A Synergy Between Jenkins and vManager Tsvi Mostovicz Verification Engineer Board design
  • 2. Automating the verification 2 • About RAD • The Problems We Faced • A Lesson from the Software Development Domain - Jenkins • Regressions and Coverage - Cadence vManager • Using Jenkins Together with vManager • Solutions Agenda
  • 3. Automating the verification 3 • Telecommunications access solutions provider • Founded in 1981, privately owned • Global company • R&D located in Israel, Tel Aviv and Beersheba • Most of our products are based on FPGAs About RAD
  • 4. Automating the verification 4 Critical Infrastructure Our Customers Mobile | Business | Wholesale Utilities| Transportation| Government Service Providers
  • 5. Automating the verification 5 • FPGA relies heavily on lab testing: the design is fixed, but the verification is not always updated • Regression data is not based on the main source code repository • Manually running regressions takes a lot of time and effort • No transparency of the regression data The Problems We Faced
  • 6. Automating the verification 6 A Lesson from Software Development - Jenkins • Continuous integration systems have solved this issue in the software realm • Every change to the source repository triggers compilation, testing and publishing of binaries Jenkins • An open-source tool, originally developed as a side project by Sun under the name Hudson, it was forked after issues with Oracle over control of the project Allows triggering of jobs based on a variety of factors Jobs can be as simple as a simple shell script Stores reports/logs, can send notifications to any imaginable consumer
  • 7. Automating the verification 7 • Regression is based on VSIF input file • Programmatic access via the vAPI Regressions and Coverage - Cadence vManager • Manage regressions: – Run regression – Analyze metrics – Track progress • Client-server model • Database backend
  • 8. Automating the verification 8 Using Jenkins Together with vManager • We’re limited by the amount of licenses and hardware resources availability during the day  only compile the sources on commits to source control – Protection from non-compiling sources • Jenkins triggers vManager to run nightly regressions on last known good compilation – We always have a running regression – Coverage is continually being aggregated – Jenkins can generate the VSIF (Verification Session Input File) on the fly for vManager – Jenkins uses vAPI to “talk” to vManager’s database
  • 9. Automating the verification 9 Source control Mail to user Compile Env Y Compile Env X Solution – Detailed Flow // dut.sv module rx_mac(); ... - wire bla; + reg bla; Compile Env X `FEATURE_Z Regression Env X Regression Env X `FEATURE_Z No testlist.vsif found Check for testlist.vsif @19:00 on weekdays trigger appropriate regressions Generate full vsif and send regression end to vManager vManager Env X session @7:00 on weekdays get list of nightly regressions from vManager Regression report Env X User’s debug environment Debug test Mail to user VSIF vAPI vAPI vAPI Stop list of matching nightly regressions, cleanup logs and send list to Jenkins User Jenkins vManager
  • 10. Automating the verification 10 Solution – Creating a VSIF on the Fly • The description tag can hold HTML tags – Use any formatting (eg. bold, underline) – Add hyperlinks to other sources of information – Very useful for reports • Using #include allows separation of responsibilities: – Verification owner maintains simple test list – Automation takes care of the rest • Using #define allows different tests to be run depending on design capabilities
  • 11. Automating the verification 11 session eth_ntu.5.2.0.ETX_2I.tm_end2end_nightly { top_dir : /home/jenkins/regressions; queuing_policy : round_robin; output_mode : log_only; description : <text><p>${DESCRIPTION_HTML}</p> <p>Defines used in build:<ul>${DEFINES_DESCRIPTION}</ul></p> <p>Changes since last regression:<ul>${CHANGES}</ul></p></text>; }; group tests { pre_run_script : "cp -f $ENV(WORKSPACE)/{*.tcl,*.hex,*.mif,*.dat,project_specific_defines.v} $DIR(run)/ 2>/dev/null || :"; run_script : "i_run.sh -comp_path=$ENV(WORKSPACE) ${ENV_TYPE} -seed=$ATTR(seed) $ATTR(sim_args) ${ENVIRONMENT} $ATTR(test_name)"; scan_script : "vm_scan.pl ${ENV_FILTER} ius.flt shell.flt"; run_mode : batch; seed : random; count : ${COUNT}; timeout : 15000; #include "testlist.vsif" }; VSIF Example - Automation
  • 12. Automating the verification 12 VSIF Example – Test List #ifdef ETX_2I test tm_end2end_2i_test {}; #elif ETX_2I_B test tm_end2end_2i_b_test {}; #elif ETX_2I_B_PLUS test tm_end2end_2i_b_plus_test {}; #endif test test_mem_map { count : 1; };
  • 13. Automating the verification 13 Solution – Using vAPI with Python Requests Library • Using Python’s requests library requires much less overhead than using Cadence’s Jenkins plugin  • vAPI access is done by sending a “filter” via a HTTP POST request • Example: Getting all nightly regressions nightly_filter = { "filter": {"@c" : ".ChainedFilter", "chain" : [ {"operand" : "GREATER_THAN", "@c" : ".AttValueFilter", "attValue": int(time_started.strftime("%s")) * 1000, "attName" : "start_time"}, {"@c" : ".ExpressionFilter", "exp" : "nightly", "attName" : "name"} ], "condition" : "AND"}, "projection":{"selection":["name"]} } session_list = requests.post(url + 'sessions/list', json=nightly_filter, auth=cred) Filters are simple Python dictionaries Just enter the correct key/value pair to get what you want
  • 14. Automating the verification 14 Cadence’s Jenkins Plugin Wishlist • Really need to fix: usability – Allow usage of environment variables – Do NOT force file names upon the user • Nice to have: help with vAPI – Dynamic form fill for generating a request • Wow, you rock: – Build step: run regression  help me create my VSIF – Return xUnit formatted results to Jenkins
  • 15. Automating the verification 15 • Jenkins - https://jenkins.io • vManager – Cadence Help (15.2) – Incisive vManager • vAPI – Cadence Help (15.2) – Incisive Enterprise Simulator – Metric Driven Verification – Incisive vManager – vManager API • Python request library - http://docs.python-requests.org Links
  • 16. After • Instant knowledge on compilation breakage • Coverage is constantly being aggregated • Full visibility into state of environment Key Takeaways Before • Spend a lot of time getting environment to compile • Unused resources of idle machines • No visibility into the current state of the environment • Effort required: 1 engineer X 4 months • Time until fix of compilation breakage: 3-4 months  2 hours – 2-3 days • Time to find bug based on a “small” fix: Unknown  1 day

Notas do Editor

  1. Change in file  triggers multiple compilations  check for testlist.vsif  Create regression job Lookup which list to run (daily, monthly, weekly)  Generate VSIF from template  Send to vManager In the morning use vAPI to get list of automated regressions  stop them and cleanup  Call reporting job  Use vAPI to get regression information  Generate report Click to debug  Get info from vManager  Checkout source repository version, copy original test run from vManager info and generate rerun script