Evaluation Framework

Constellation includes a lightweight C++ evaluation framework, designed to support future advanced traffic models. Currently, the framework supports measuring per-flow latency and bandwidth using two traffic models.

  • An injection-rate based model, with per-flow injection rates

  • A trace-driven model, which loads Netrace trace files

Running a Simple Evaluation

Traffic evaluations are best run in Chipyard-standalone mode.

cd chipyard/sims/vcs
make SUB_PROJECT=constellation BINARY=none CONFIG=EvalTestConfig00 MODEL=EvalHarness run-binary-debug

A generated noceval.cfg file will be generated in the generated-src directory. Copy this file elsewhere and modify it to adjust the simulation parameters. The important fields of this config file are:

  • warmup: Number of cycles to spend in the warmup phase, to bring the network to steady-state

  • measurement: Number of cycles after warmup in which throughput is measured

  • drain: Number of cycles after measurement to wait for the network to drain. If the network does not drain in this many cycles, an assertion is fired

  • flits_per_packet: Packet size

  • required_XXX: Required throughput, median latency, max latency. IF measurement exceeds these, an assertion fires.

  • netrace_enable: Use Netrace trace file as traffic model

  • netrace_trace: Path to Netrace trace file

  • netrace_region: Netrace region to begin trace replay at

  • flow x y z: Specifies injection rate z for flow from ingress index x to egress index y

After modifying a noceval.cfg flag, the simulation can be rerun with:

cd chipyard/sims/vcs
make SUB_PROJECT=constellation BINARY=none CONFIG=EvalTestConfig00 MODEL=EvalHarness run-binary-debug EXTRA_SIM_FLAGS="+eval_params=path/to/noceval.cfg"