diff options
| author | Henry Cook | 2015-08-12 16:55:26 -0700 |
|---|---|---|
| committer | Henry Cook | 2015-08-12 17:14:26 -0700 |
| commit | 0514044266af6ab681b4887ba50d630b268726d7 (patch) | |
| tree | 761f7a9c4f8ee3eecd1e23d0a4f50022e0a83a56 /src/main/scala/Chisel/Parameters.scala | |
| parent | 4031fad8dda90a1c14149c3c378dbf9798b388d9 (diff) | |
params and paramsScope objects
Diffstat (limited to 'src/main/scala/Chisel/Parameters.scala')
| -rw-r--r-- | src/main/scala/Chisel/Parameters.scala | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/src/main/scala/Chisel/Parameters.scala b/src/main/scala/Chisel/Parameters.scala index 24cb04fb..d5b0a46f 100644 --- a/src/main/scala/Chisel/Parameters.scala +++ b/src/main/scala/Chisel/Parameters.scala @@ -67,8 +67,30 @@ import scala.collection.mutable // Convention: leading _'s on names means private to the outside world // but accessible to anything in this file. -abstract trait UsesParameters { - def params: Parameters +@deprecated("params is now globally available as Chisel.params object","08-01-2015") +abstract trait UsesParameters { } + +object params { + def apply[T](field:Any):T = Builder.dynamicContext.getParams.apply(field) + def apply[T](field:Field[T]):T = Builder.dynamicContext.getParams.apply(field) + // TODO: provide other mutators of Parameters? or @deprecate this and make + // Parameters private, only mutateable through paramsScope? + def alterPartial[T](mask: PartialFunction[Any,Any]): Parameters = { + Builder.dynamicContext.getParams.alterPartial(mask) + } + def constrain(gen:ViewSym=>Ex[Boolean]) = Builder.dynamicContext.getParams.constrain(gen) +} + +object paramsScope { + def apply[T](p: Parameters)(body: => T): T = { + Builder.dynamicContext.paramsScope(p)(body) + } + def apply[T,S](mask: Map[S,Any])(body: => T): T = { + apply(Builder.dynamicContext.getParams.alter(mask))(body) + } + def apply[T](mask: PartialFunction[Any,Any])(body: => T): T = { + apply(Builder.dynamicContext.getParams.alterPartial(mask))(body) + } } class ParameterUndefinedException(field:Any, cause:Throwable=null) @@ -79,6 +101,8 @@ class KnobUndefinedException(field:Any, cause:Throwable=null) // Knobs are top level free variables that go into the constraint solver. final case class Knob[T](name:Any) +// Fields are wrappers around particular a particular parameter's type +class Field[T] class ChiselConfig( val topDefinitions: World.TopDefs = { (a,b,c) => {throw new scala.MatchError(a)}}, @@ -124,6 +148,7 @@ class ChiselConfig( override def toString = this.getClass.getSimpleName } +// TODO eliminate this or move it to DynamicContext object Dump { def apply[T](key:Any,value:T):T = Builder.parameterDump.apply(key, value) def apply[T](knob:Knob[T]):Knob[T] = Builder.parameterDump.apply(knob) @@ -140,7 +165,6 @@ class ParameterDump { // objects given to the user in mask functions (site,here,up) abstract class View { - protected val deftSite: View // when views are queried without a specifying a site this is the default // use `this` view's behavior to query for a parameters value as if @@ -414,8 +438,6 @@ object Parameters { } } -class Field[T] - final class Parameters( private val _world: World, private val _look: _Lookup |
