Design Automation Conference 2023 (60DAC) at San Francisco - Lets meet, share, learn and network!



Its an honor and privilege to share that I will be chairing Front End Design session at 60DAC at San Francisco. Are you attending 60DAC? Let’s meet, share, learn and network. Details at LinkedIn post here 


Front Design Session for which I have given an opportunity to Chair @DAC

https://60dac.conference-program.com/session/?sess=sess189


 


DAC Conference website for more details


Check out my last years DAC visit details here


The Design Automation Conference (DAC) is recognized as the premier conference for design and automation of electronic systems. The conference is devoted to Electronic Design Automation (EDA), Intellectual Property (IP), Embedded Systems and Software (ESS), IoT, Automotive Systems, Artificial Intelligence and Machine Learning (AI/ML), Security and Design on Cloud. 

 

The 2023 Design Automation Conference (DAC 2023) will be held July 9–13 in San Francisco, CA, at the Moscone Center West.

 

If you are visiting DAC this year, lets stay in touch, I will be happy to meet, share and learn. Stay tuned for more details!  




Thanks,

ASIC With Ankit

Semiconductor Ecosystem at a glance!

We all know semiconductor is the next growth story. we also seeing digital transformation of everything and in all industries, whether it is IOT (Internet of Things), AI (Artificial Intelligent), ML (Machine Learning), Automotive, Medical, Defense, 5G/6G, Networking, Cloud Computation or any retail business, Digital transformation is everywhere! 

Here, I have tried putting things together to understand the Semiconductor Eco System in simple pictorial view below. 

Copyright © 2023 ASIC With Ankit @ www.asicwithankit.com

The semiconductor ecosystem refers to the interconnected network of companies, organizations, technologies, processes involved in the design, development, manufacturing and distribution, it also includes, universities which helps generated industry ready skill set for semiconductor industry. Now lets understand each component of this eco system.

Overall, This industry seems simple, Fabless Companies in semiconductor ecosystem design and develops chips. They give this design to foundries, Foundry then manufactures these chips and give them to OSAT and test packaging companies who then test, validate and puts them in to device to make it ready for end user.

Now, lets understand in detail how many types of companies are there in the whole eco system and what are different component makes the full ecosystem.

1. IDM (Integrated Device Manufacturer):

A company that has all manufacturing processes and companies who design, develop and manufacture chips are called as IDM (Integrated Device Manufacturer). These type of companies has wafer producing facility, and also takes charge of in designing the semiconductors, wafer processing, packaging and testing. Basically from Semiconductor design to all the way manufacture! 

2. Fabless Companies:
A fabless companies are the one who focuses on designing semiconductor chips without factories that requires huge investment. Meaning companies which are producing wide range of products but in small or large amount and keep the technology diversity are called fabless companies. These companies requires TSMC, Intel and Samsung type companies who has their fabrication plants and can manufacture designed chips.

3. Foundry:

A companies which only manufactures chips design received from fabless and IDM companies. So basically Foundry companies do not design and develop chips, they only manufactures chips. Instead of producing their own products they mostly take orders from fabless companies and manufactures chips for them. Producing semiconductor chips requires billions of dollar of investments and extremely complex production technologies, so its difficult for every semiconductor companies to do it on their own. So basically, foundries becomes the production facility for all these fabless companies.

4. OSAT (Outsourced Semiconductor Assembly and Testing):

These companies are also called as Assembly or test packaging companies. Basically, it takes care of backend processes. In semiconductor industry  backend processes are assembly and testing. Foundry manufactures the chips in to wafers but these chips can not exchange electric signals. Packaging are the process in which these chips are individually cut and packed to go in to devices. Now its time to check the quality of packed chips. So basically, OSAT companies are doing packaging and testing to make sure chips are working as expected and ready for end user.

5. EDA (Electronic Design and Automation):

EDA company provides tools, technology and IPs for semiconductor designers to create, simulate and validate chip design. EDA companies plays important role in semiconductor ecosystem. EDA tools includes computer-aided design (CAD), simulation and verification software. Companies like Cadence, Synopsys, Mentor Graphics (Siemens Digital) and many other EDA companies, develops and provide these tools to help fabless and IDM companies to develop their chips fast and efficiently.

6. Vendors, Suppliers and Distributors

There are vendors, supplier and distributors who help all of these companies to provide basic raw materials, tools, machines and also help sale chips and devices to end market.

7. Universities and Training Institutes

Universities and training institutes also plays very important role in build strong semiconductor ecosystem. Universities develops and trained engineers and to make them industry ready so they can start contributing to semiconductor ecosystem. Without right skill development for engineers it becomes difficult for industry to get efficient output from engineers. So its very important for universities to collaborate and partner with industry to continuously learn about new technology, processes and require skills and adjust their curriculum.

The semiconductor ecosystem is highly complex and interconnected with each component relying on others to ensure the efficient and continues production and advancement of semiconductor technology. Collaboration with all partners, customers and all stack holder and robust supply chain is very important for the success of semiconductor industry.

You can watch my latest webinar to SVIT, university @Gujarat on Semiconductor overview and ecosystem. You can also subscribe to follow my YouTube Channel from here 



Hope this helps understanding Semiconductor ecosystem! Stay tunes for more interesting blogs!

How to Randomize non-random variable in System Verilog


System Verilog is industry adopted very popular hardware descriptive language, most of the companies in industry have been using this language for complex SOC, ASIC design and verification.

System verilog has various ways you can randomize values and fields to generate random stimulus for complex system verification. Randomizing variables and fields which are declared as rand are easy to randomize with or without constraints. In system verilog you can just do object.randomize() and all variables and fields declared as rand will gets random values during the simulation. 

There could be different situation where one require to know how to generate random values for variables which are not declared as rand? The answer is scope randomize function (std::randomize())

std::randomize() is a scope randomize function that enables users to randomize data in the current scope. This method is also very useful if some variables required to be randomized are not part of a class. 

Lets understand this with simple example:

module my_module;

  bit [15:0] address;

  bit [31:0] data;

  function bit my_test ();

    bit pass;

    bit read_write;

    pass = std::randomize(address, data, read_write);

    return read_write;

  endfunction

endmodule

In this example, if you notice, we are using all these variables for scope randomize function. When you run this type of code usage, it std::randomize function will randomize all variables in its scope to generate random values without needing to use .randomize() method.

Now that we learn to randomize variable which are not rand in nature, you might have question what about constraints? How should we write constraints in this method. Good news is, you can. You can provide your constrains using "with" something like below:

pass = std::randomize(address, data, read_write) with {read_write -> address > 'h000F ;};

Hope you find this information useful. Stay tuned for more interesting stuffs about verification!

-ASIC With Ankit