Meeting Notes 2019.01.23 - StanfordAHA/CGRAFlow GitHub Wiki

Teguh Notes (in org-mode as usual):

[2019-01-23] Winter Quarter Goals

General Notes:

  • Please merge all timelines in a group to have a timeline for the entire group so rollups can be presented as a group rather than individuals in the group

For Discussion:

  • Should Peak be decoupled from the other tools (by collateral possibly) so the other tools can start working with some information that doesn’t come directly out of Peak?
  • Floating point formal verification? What would be useful? Possibly to verify correctness of rewrite rules on an abstracted version of floating point that is not as tricky for hardware?
  • Garnet
  • Third-Party IP Protection
  • Power Domains

1. Applications

  • program to generate random halide pipelines
  • Feb 8 - goal is to generate 1000 random halide functions
  • Mar 1? - camera pipeline from raw to rgb
  • people working on halide have the ability to make random DAGs of various primitives in varying degrees of complexity to push through the rest of the flow
  • Priyanka wants a bitstream through garnet by Mar 1

Non-Goals

  • Anything beyond what was just said
  • There will only be DAGs of stencil pipelines, and a camera pipeline

2. Compiler

  • make sure that random pipeline generator can go through the compiler
  • histogram, multiple pixels per cycle, multiple cycles per pixel, strided access
  • merge linebuffer and doublebuffer implementations

Non-Goals

  • upsample/downsample

Dependencies

  • Need elements to be added to CoreIR
  • Need testing in CoreIR

3. Tools

  • floating point specification in CoreIR
  • aiming to specify the PE tiles in Peak
  • API for manually writing mapper rules
  • Automatic mapper generation from Peak
  • Integrate FPGen with CoreIR ops
  • Garnet is aiming to support three DSLs: Peak, Interconnect, and Memory
  • Want to figure out the best interconnect design based on the 1000 halide applications that will be generated
  • Implement all the garnet passes to better support power domains and other physical design problems instead of having them hardcoded
  • Get functional specification out of Peak and compile to magma

Dependencies

  • Ross wants reduces out of the halide compiler in a specific optimized form
  • Needs code from Nikhil for the divide operation
  • Needs to work to figure out what the PE spec is and how to use Peak to create it
  • Need to be able to peek internal signals in magma

4. Formal Methods

  • Meet with all designers and determine what good blocks for testing are what what good blocks for verification are
  • Faster SMT solving specced out
  • Transition system text format for CVC4
  • SQED for accelerators, examined on a 4x4 CGRA as proof of concept
  • contract-based verification to embed smt-based description in coreir metadata
  • floating point formal verification?

Dependencies

  • Need CoreIR metadata to support passing through SMT info

5. Testing + Validation

  • Meet with designers to figure out how to get more useful tests and what things would be good to test
  • Set up CI infrastucture with commercial tool support
  • Any new RTL needs to have 90% line coverage or pull request will be blocked
  • Constrained random
  • Interactive mode using verilog DPI for easier debugging
  • Porting testbench generator to Fault
  • testing hackathon

Dependencies

  • Might need dead-code elimination in CoreIR
  • Would like others to start adding their test plans (in English) in the Garnet repo

Nice-to-haves

  • 90% coverage only on the things that can change as determined by formal verification

6. SoC

  • cgra-soc interface
  • soc integration
  • zynq prototype for the soc
  • software architecture proposal
  • soc configuration protocol

Dependencies

  • talk with pnr and compiler about information that needs to be added into the configuration
    • done signal from cgra
    • bank information for second level memory
  • cgra and soc need to agree on interface

7. CGRA

  • next version of the PE with floating point and transcendentals
  • memory tile with test-driven design, with ability to use as double buffer
  • new interconnect
  • 2nd level memory hierarchy
  • column-wise global signals
  • double-buffering of config registers
  • column-wise control of power domains (at the application level for this quarter)
  • virtual tapeout bimonthly

Dependencies

  • where to put the done signal
  • need information about latency and input size from compiler
  • pnr needs to have power domain information
  • coreir needs to output power domain information
  • mapper and pnr should be aware of power domain and signals crossing power domains
  • generator in upf files
⚠️ **GitHub.com Fallback** ⚠️