@@ -189,6 +189,27 @@ object Backend {
189189 Some (CompilationSettings .Parallelism .default)
190190 )
191191
192+ // Internal copy method that makes writing the `withX` helpers easier.
193+ private def _copy (
194+ traceStyle : Option [CompilationSettings .TraceStyle ] = this .traceStyle,
195+ outputSplit : Option [Int ] = this .outputSplit,
196+ outputSplitCFuncs : Option [Int ] = this .outputSplitCFuncs,
197+ disabledWarnings : Seq [String ] = this .disabledWarnings,
198+ disableFatalExitOnWarnings : Boolean = this .disableFatalExitOnWarnings,
199+ enableAllAssertions : Boolean = this .enableAllAssertions,
200+ timing : Option [CompilationSettings .Timing .Type ] = this .timing,
201+ parallelism : Option [CompilationSettings .Parallelism .Type ] = Some (CompilationSettings .Parallelism .default)
202+ ): CompilationSettings = new CompilationSettings (
203+ traceStyle = traceStyle,
204+ outputSplit = outputSplit,
205+ outputSplitCFuncs = outputSplitCFuncs,
206+ disabledWarnings = disabledWarnings,
207+ disableFatalExitOnWarnings = disableFatalExitOnWarnings,
208+ enableAllAssertions = enableAllAssertions,
209+ timing = timing,
210+ parallelism = parallelism
211+ )
212+
192213 @ deprecated(" don't use the copy method, use 'with<name>' single setters" , " Chisel 7.1.0" )
193214 def copy (
194215 traceStyle : Option [CompilationSettings .TraceStyle ] = this .traceStyle,
@@ -230,93 +251,22 @@ object Backend {
230251 parallelism = Some (CompilationSettings .Parallelism .default)
231252 )
232253
233- def withTraceStyle (traceStyle : Option [CompilationSettings .TraceStyle ]) = CompilationSettings (
234- traceStyle,
235- this .outputSplit,
236- this .outputSplitCFuncs,
237- this .disabledWarnings,
238- this .disableFatalExitOnWarnings,
239- this .enableAllAssertions,
240- this .timing,
241- this .parallelism
242- )
254+ def withTraceStyle (traceStyle : Option [CompilationSettings .TraceStyle ]) = _copy(traceStyle = traceStyle)
243255
244- def withOutputSplit (outputSplit : Option [Int ]) = CompilationSettings (
245- this .traceStyle,
246- this .outputSplit,
247- outputSplitCFuncs,
248- this .disabledWarnings,
249- this .disableFatalExitOnWarnings,
250- this .enableAllAssertions,
251- this .timing,
252- this .parallelism
253- )
256+ def withOutputSplit (outputSplit : Option [Int ]) = _copy(outputSplit = outputSplit)
254257
255- def withOutputSplitCFuncs (outputSplitCFuncs : Option [Int ]) = CompilationSettings (
256- this .traceStyle,
257- this .outputSplit,
258- outputSplitCFuncs,
259- this .disabledWarnings,
260- this .disableFatalExitOnWarnings,
261- this .enableAllAssertions,
262- this .timing,
263- this .parallelism
264- )
258+ def withOutputSplitCFuncs (outputSplitCFuncs : Option [Int ]) = _copy(outputSplitCFuncs = outputSplitCFuncs)
265259
266- def withDisabledWarnings (disabledWarnings : Seq [String ]) = CompilationSettings (
267- this .traceStyle,
268- this .outputSplit,
269- this .outputSplitCFuncs,
270- disabledWarnings,
271- this .disableFatalExitOnWarnings,
272- this .enableAllAssertions,
273- this .timing,
274- this .parallelism
275- )
260+ def withDisabledWarnings (disabledWarnings : Seq [String ]) = _copy(disabledWarnings = disabledWarnings)
276261
277- def withDisableFatalExitOnWarnings (disableFatalExitOnWarnings : Boolean ) = CompilationSettings (
278- this .traceStyle,
279- this .outputSplit,
280- this .outputSplitCFuncs,
281- this .disabledWarnings,
282- disableFatalExitOnWarnings,
283- this .enableAllAssertions,
284- this .timing,
285- this .parallelism
286- )
262+ def withDisableFatalExitOnWarnings (disableFatalExitOnWarnings : Boolean ) =
263+ _copy(disableFatalExitOnWarnings = disableFatalExitOnWarnings)
287264
288- def withEnableAllAssertions (enableAllAssertions : Boolean ) = CompilationSettings (
289- this .traceStyle,
290- this .outputSplit,
291- this .outputSplitCFuncs,
292- this .disabledWarnings,
293- this .disableFatalExitOnWarnings,
294- enableAllAssertions,
295- this .timing,
296- this .parallelism
297- )
265+ def withEnableAllAssertions (enableAllAssertions : Boolean ) = _copy(enableAllAssertions = enableAllAssertions)
298266
299- def withTiming (timing : Option [CompilationSettings .Timing .Type ]) = CompilationSettings (
300- this .traceStyle,
301- this .outputSplit,
302- this .outputSplitCFuncs,
303- this .disabledWarnings,
304- this .disableFatalExitOnWarnings,
305- this .enableAllAssertions,
306- timing,
307- this .parallelism
308- )
267+ def withTiming (timing : Option [CompilationSettings .Timing .Type ]) = _copy(timing = timing)
309268
310- def withParallelism (parallelism : Option [CompilationSettings .Parallelism .Type ]) = CompilationSettings (
311- this .traceStyle,
312- this .outputSplit,
313- this .outputSplitCFuncs,
314- this .disabledWarnings,
315- this .disableFatalExitOnWarnings,
316- this .enableAllAssertions,
317- this .timing,
318- parallelism
319- )
269+ def withParallelism (parallelism : Option [CompilationSettings .Parallelism .Type ]) = _copy(parallelism = parallelism)
320270 }
321271
322272 def initializeFromProcessEnvironment () = {
0 commit comments