nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Kind: research pet project.
Project status: early prototype.
We develop the tool for generating and programming specialized non-von Neumann CGRA processors used for cyclic execution of control and signal/data processing algorithms. These processors are based on the original Not Instruction Transport Triggered Architecture (NITTA). That allows us to:
- Provide high speed and parallel execution of irregular algorithms (where GPU is not applicable) in hard real-time (clock accuracy).
- Make the processor reconfigurable for different application domains.
- Provide a high-level language for application developers and fast compilation.
Our future users can resolve the following tasks:
- Development of embedded and cyber-physical systems.
- Hardware and software testing and rapid prototyping (HIL and PIL).
- Development of programmable accelerators and coprocessors.
Modules
- NITTA
- NITTA.Frontends Chooses a frontend based on source file extension or format
- NITTA.Frontends.Common Common types and functions for all frontend implementations
- NITTA.Frontends.Lua Lua frontend prototype
- XMILE
- NITTA.Frontends.XMILE.DocumentParser Parses XMILE source file to internal tree structure
- NITTA.Frontends.XMILE.Frontend XMILE frontend prototype
- NITTA.Frontends.XMILE.MathParser Parses XMILE math equations
- Intermediate
- NITTA.Intermediate.Analysis Analysis of the process execution flow
- NITTA.Intermediate.DataFlow DataFlow graph
- NITTA.Intermediate.Functions Library of functions
- NITTA.Intermediate.Functions.Accum Accum function
- NITTA.Intermediate.Simulation Functional simulation
- NITTA.Intermediate.Types Types for an algorithm intermediate representation
- NITTA.Intermediate.Value Processed value representation
- NITTA.Intermediate.Variable Types for variable representation
- Model
- Microarchitecture
- NITTA.Model.Microarchitecture.Config
- NITTA.Model.Microarchitecture.Types Types for micro architecture description.
- Networks
- NITTA.Model.Networks.Bus Simple process unit network - pseudo bus.
- NITTA.Model.Networks.Types Types for processor unit network description.
- NITTA.Model.Problems
- NITTA.Model.Problems.Allocation PU allocation on the bus network
- NITTA.Model.Problems.Bind Function distribution between processor units
- NITTA.Model.Problems.Dataflow Sending data between processor units over a network
- NITTA.Model.Problems.Endpoint Isolated processor unit interaction
- NITTA.Model.Problems.Refactor Automatic manipulation over an intermediate representation
- NITTA.Model.Problems.Refactor.BreakLoop Refactoring for support computational loops
- NITTA.Model.Problems.Refactor.ConstantFolding Constant folding optimization
- NITTA.Model.Problems.Refactor.OptimizeAccum Optimize an algorithm for Accum processor unit
- NITTA.Model.Problems.Refactor.OptimizeLogicalUnit
- NITTA.Model.Problems.Refactor.ResolveDeadlock Refactoring for resolving deadlocks
- NITTA.Model.Problems.ViewHelper
- NITTA.Model.ProcessIntegrity Checking the target process integrity
- NITTA.Model.ProcessorUnits Library of processor unit models
- NITTA.Model.ProcessorUnits.Accum Accumulator processor unit implementation
- NITTA.Model.ProcessorUnits.Broken Process Unit for negative tests
- NITTA.Model.ProcessorUnits.Comparator A comparator that supports operations: <=,, >=, ==
- NITTA.Model.ProcessorUnits.Divider Integral divider processor unit with pipeline
- NITTA.Model.ProcessorUnits.Fram Buffers inside and across computational cycles
- IO
- NITTA.Model.ProcessorUnits.LogicalUnit
- NITTA.Model.ProcessorUnits.Multiplexer
- NITTA.Model.ProcessorUnits.Multiplier
- NITTA.Model.ProcessorUnits.Shift Shift Processor Unit
- NITTA.Model.ProcessorUnits.Types Set of types for process unit description
- NITTA.Model.TargetSystem Model of target system for synthesis and so on.
- NITTA.Model.Time Types for time description
- Microarchitecture
- NITTA.Project
- NITTA.Project.Context Context for project template
- NITTA.Project.Template Generate target project by specific templates
- NITTA.Project.TestBench Generation a test bench for the target system.
- NITTA.Project.Types Types for a target project description and generation
- NITTA.Project.VerilogSnippets Snippets for Verilog code-generation
- NITTA.Synthesis Entry point for synthesis process and target system generation.
- NITTA.Synthesis.Analysis Analysis synthesis proccess.
- NITTA.Synthesis.Explore Explore synthesis tree
- NITTA.Synthesis.Method Synthesis method implementation.
- MlBackend
- NITTA.Synthesis.MlBackend.Client ML backend API client (DTOs, request wrappers)
- NITTA.Synthesis.MlBackend.FixedCache Fixed version of thread-safe write-once cache from io-memoize package
- NITTA.Synthesis.MlBackend.ServerInstance ML backend server instance management
- NITTA.Synthesis.Steps Synthesis tree representation
- NITTA.Synthesis.Steps.Allocation Implementation of SynthesisDecisionCls that allows to allocate PUs
- NITTA.Synthesis.Steps.Bind
- NITTA.Synthesis.Steps.BreakLoop
- NITTA.Synthesis.Steps.ConstantFolding
- NITTA.Synthesis.Steps.Dataflow
- NITTA.Synthesis.Steps.OptimizeAccum
- NITTA.Synthesis.Steps.OptimizeLogicalUnit
- NITTA.Synthesis.Steps.ResolveDeadlock
- NITTA.Synthesis.Types Synthesis tree representation
- NITTA.UIBackend HTTP backend for the NITTA web UI
- NITTA.UIBackend.REST REST API description for NITTA backend
- NITTA.UIBackend.Timeline Preparing data for process visualization.
- NITTA.UIBackend.Types Types for UI backend.
- NITTA.UIBackend.ViewHelper Types for marshaling data for REST API
- NITTA.UIBackend.ViewHelperCls Type class for marshaling helpers
- NITTA.UIBackend.VisJS Graph of intermediate view.
- NITTA.Utils
- NITTA.Utils.Base Utils for external libraries
- NITTA.Utils.ProcessDescription Utilities for process description.
- NITTA.Frontends Chooses a frontend based on source file extension or format