Coder Social home page Coder Social logo

coloquinte / moosic-yosys-plugin Goto Github PK

View Code? Open in Web Editor NEW
15.0 15.0 2.0 316 KB

Yosys plugin for logic locking and supply-chain security

License: GNU General Public License v2.0

Makefile 0.52% C++ 89.80% Shell 5.91% Gnuplot 3.78%
hardware hardware-security logic-locking security supply-chain-security

moosic-yosys-plugin's Introduction

Coriolis Etesian: an analytical VLSI placer

Etesian (formerly Coloquinte) is a framework for placing VLSI circuit. Coloquinte is now part of the Coriolis toolchain. If you are looking for an up-to-date version, please visit the official Coriolis repository.

It targets standard-cell digital circuits, optionally with pre-placed macroblocks. It is now a complete tool, handling all steps of a placement flow. It features exact and approximate wirelength models, and should be updated to do timing- and routing-driven optimization.

It is not standalone: no parsers; currently, it interfaces with the Coriolis CAD toolchain, but you you can follow the example main and interface it with your own tool. It is still a work in progress, and the optimization process could be significantly improved in the coming months. However, all tools are already competitive with other academic placers - and it is the only open source placer using analytical placement techniques.

Principle

Etesian is based on analytical placement: it performs continuous optimization of the objective function with a penalty accounting for overlap. This penalty is currently calculated from a legalized or partially legalized placement. It alternates between continuous optimization and legalization to reach a good solution, then perform local optimizations.

Tools

Global placement

Currently, the global placement is based on a common method: a quadratic local wirelength model that is optimized using conjugate gradient. It is extremely flexible, with the exact Steiner model as well as the classical star and bounding-box models, and takes advantage of parallelism.

Legalization

Legalization is performed in two steps: rough legalization, accounting for placement density, and exact legalization accounting for cell overlaps. Both should be beyond industrial level, although exact legalization only handles standard cells yet.

The rough legalizer models a 2D transportation problem that is optimized using various locally optimal algorithms. They may be run in parallel. The exact legalization places one cell at a time but is able to move previous cells to obtain better solution: it can handle extremely dense placements (>99%) with fixed macroblocks.

Detailed placement

The detailed placement optimizations look for topology (i.e. cell ordering) modifications, and optimize the positions for a given topology. They use specialized algorithms for position optimizations - most of them are not published yet -, and generally brute-force for topology modifications.

Runtime

For ~300,000 cells and a single core at 2 GHz, the runtimes are approximately (depending on solution quality):

  • 10-30s per global placement iteration
  • 10s for a rough legalization
  • 3s to obtain a fully legal placement
  • 400s to perform detailed placement

A typical placement run will usually feature 50 to 200 global placement iterations. Note that global placement and rough legalization can use multiple cores.

moosic-yosys-plugin's People

Contributors

coloquinte avatar electricpotato avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

moosic-yosys-plugin's Issues

improve docs

Hi! nice presentation at FSiC2023!

Please improve the docs by adding a simple example command that shows logic locking in action.

Also, I just tested the plugin with oss-cad-suite, which might be worth including in your 'install instructions' section as it's a lot faster to install yosys that way.

Thanks,
Matt

Add Attacks ?

it would be interesting to have attacks such as the SAT attack at least.

Handling of multi-bit ports

Only single-bit wires are handled now. This is mostly OK for simple benchmarks, but breaks when modules have multi-bit ports

Multi-objective optimization over multiple metrics

Current metrics are area/delay/corruption estimates. We could still add corruption-related metrics + pairwise security.

Now we have to bridge those and add local-search algorithms to take care of the optimization.

Implement metrics from fault-based-analysis paper

It would be nice to implement the metrics used by "Fault Analysis-based Logic Encryption".

Theu use the number of test patterns that have an impact (NoP), times the total number of error (NoO), separated between 0 and 1 fault. This does not really make sense as it creates a quadratic version of the corruption (NoO only), but would be nice to have to compare to.

Build with OSS-CAD suite

It seems that yosys-config is not provided by OSS-CAD suite, so it's not possible to build with an OSS-CAD installation

ERROR: Multiple modules are selected.

hi, i have a project with multi verilog file and multi module, i use the moosic in a yosys script to encryption the project as below:
image

But I received the following error message
image

How should i do?

Avoiding slowdown of the circuit

This sounds a lot like you are adding a lot of delay into your design. It might make sense to calculate the critical path through the circuit first, and then apply this method only on all other pathes? (And only to apply as long as the modified pathes don't become the new critical path)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.