Coder Social home page Coder Social logo

chiselflow's People

Contributors

aferr avatar aswaterman avatar azidar avatar ccelio avatar chick avatar colinschmidt avatar donggyukim avatar dt27182 avatar ducky64 avatar dz333 avatar grebe avatar hcook avatar jackbackrack avatar jackkoenig avatar myzha0 avatar palmer-dabbelt avatar sbeamer avatar sdtwigg avatar sebastianboe avatar seldridge avatar shunshou avatar stevobailey avatar terpstra avatar ucbjrl avatar zhemao avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

chiselflow's Issues

Add Demo Libraries and Tutorial

Add a sub project which can be used to supply some demonstrations.
Also add a README.md for running these and explaining how IFC is enforced.

Interface for "Flipped" Objects is Not Great

Currently you have to label the outer "Flipped" itself rather than its contents (which may be an Input), it would be nicer for Flipped objects to pick up a label from the innermost non-flipped object by default.

Update Test Suite and Backwards Compatibility

Currently the Chisel test suite does not pass at all for mismatched syntax and other reasons. Only code with appropriate labels actually passes the chisel compilation phase.

We need to update the test suite and add unit tests for examples that actually use the IFC label features extensively.

"Decoupled" Loses Track of The Security Label of Its Data Signal

Issue description:
We use Decoupled object to create handshake interface. For example, val test = Decoupled(UInt(128.W)) produces a 128-bit output with valid/ready interface. In secure chisel extension, the API is apply(gen: T, rdyl: Label = UnknownLabel, vall: Label = UnknownLabel) to specify labels. In the API, only ready and valid signals are explicitly labeled, and the bits should be implicitly labeled with data type gen. But the compiler does not work as expected, the bits is not labeled in the generated firrtl.

Example code:

class Test extends Module { 
   val io = IO(new Bundle {
       val msg_o = Decoupled(UInt(128.W, bot), bot, bot)
   })
}

Error message: [declaration io, with bad field bits in internal record msg_o : {ready : {L, H}, valid : {L, H}, bits : {, }}] does not have a declared label.

Opinion:
File secure-chisel3/src/main/scala/chisel3/util/Decoupled.scala defines the interface:

  val ready = Input(Bool(), rdyl)
  val valid = Output(Bool(), vall)
  val bits = Output(gen.chiselCloneType)

In the definition, bits inherits the data type from gen, but I think chiselCloneType method does not inherits the label information. Possible solution is val bits = Output(gen.chiselCloneType, gen.lbl_)?

Incorrect Labels Assigned Sometimes Cause Sirrtl Crash

At least in 1 instance, the generated firrtl has the wrong declaration for a label.
In the attached case, the InsnLookup module has the wrong label on its output. It should be taken from the other output wires (out_conf and out_int).

Instead, in the generated firrtl it uses the instantiation of InsnLookup (named icache) for the confidentiality.
debug.zip

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.