package decode
- Alphabetic
- Public
- Protected
Type Members
- trait BoolDecodeField[T <: DecodePattern] extends DecodeField[T, Bool]
Special case when output type is a single Bool
Special case when output type is a single Bool
- T
pattern this field should match
- class DecodeBundle extends Record
Output of DecoderTable
- trait DecodeField[T <: DecodePattern, D <: Data] extends AnyRef
One output field of a decoder bundle
One output field of a decoder bundle
- T
pattern this field should match
- D
output type of this field
- trait DecodePattern extends AnyRef
Input pattern a DecoderField should match, e.g.
Input pattern a DecoderField should match, e.g. an instruction
- class DecodeTable[I <: DecodePattern] extends AnyRef
A structured way of generating large decode tables, often found in CPU instruction decoders
A structured way of generating large decode tables, often found in CPU instruction decoders
Each field is a
DecoderPattern
, its genTable method will be called for each possible pattern and gives expected output for this field as aBitPat
.- I
concrete type of input patterns trait
- case class DecodeTableAnnotation(target: ReferenceTarget, truthTable: String, minimizedTable: String) extends SingleTargetAnnotation[ReferenceTarget] with Product with Serializable
DecodeTableAnnotation used to store a decode result for a specific TruthTable.
DecodeTableAnnotation used to store a decode result for a specific TruthTable. This is useful for saving large TruthTable during a elaboration time.
- target
output wire of a decoder.
- truthTable
input TruthTable encoded in a serialized TruthTable.
- minimizedTable
minimized truthTable encoded in a serialized TruthTable.
- Note
user should manage the correctness of minimizedTable.
- abstract class Minimizer extends AnyRef
- sealed class TruthTable extends AnyRef
Value Members
- object EspressoMinimizer extends Minimizer with LazyLogging
A Minimizer implementation to use espresso to minimize the TruthTable.
A Minimizer implementation to use espresso to minimize the TruthTable.
espresso uses heuristic algorithm providing a sub-optimized) result. For implementation details, please refer to: https://www.springerprofessional.de/en/logic-minimization-algorithms-for-vlsi-synthesis/13780088
a espresso executable should be downloaded from https://github.com/chipsalliance/espresso
If user want to user the this Minimizer, a espresso executable should be added to system PATH environment.
- case object EspressoNotFoundException extends Exception with Product with Serializable
- object QMCMinimizer extends Minimizer
A Minimizer implementation to use Quine-Mccluskey algorithm to minimize the TruthTable.
A Minimizer implementation to use Quine-Mccluskey algorithm to minimize the TruthTable.
This algorithm can always find the best solution, but is a NP-Complete algorithm, which means, for large-scale TruthTable minimization task, it will be really slow, and might run out of memory of JVM stack.
In this situation, users should consider switch to EspressoMinimizer, which uses heuristic algorithm providing a sub-optimized result.
- object TruthTable
- object decoder extends LazyLogging