Controlling UVM sequence in multiple agents with the same fields in the sequence items

I have an environment with a single agent which I would like to use in a bigger scope.
I would like to use multiple agents (which are the same). However, I would like that for every sequence item each agent randomizes, few fields would be the same across all agents. For example, let’s say I have a rand field named “width”, and the test runs for 10 items. I would like that “width” will be the same across all agents for the first item. Then it will be randomized again for the second item, though again the same for all agents, and so forth. Virtual sequence is something that might help, though I do not know how to proceed from it. Thanks

In reply to enure:

To clarify:
(1) you have a ceratin agant definition inside your blocklevel testbench.
(2) You want to create a SoC testbench with several agents of the same agent type as in blocklevel testbench.
(3) You want to run the same sequences on all agents with the same data member “width”.

To reach this you have to randomize your sequences with the same conatraint “width == some_value;”
In your virtual sequence.

One approach you can take is
create as many as instances you need for agent in env, use array
take the same number of instances of sequence in the test.
now you can use the combination of foreach - fork-join along with careful use of automatic variables to pass the values you wish to keep same for all the sequences.
simply start all the sequences on sequencers.
iterate the number of transactions from the test.

Thanks for the answers.
Since my problem has more details than I provided here, I solved it in different approach.
I used a central driver which includes array of the “already implemented” sequence items.
I connected this driver to all my “already implemented” agents, with analysis ports, one port per agent. When the central driver get sequence item, it splits it to each of my agents through the analysis ports. Then I changed my “already implemented” driver to be uvm_component, which gets its items from from the analysis ports.
To summarize, I had to make small modification to my “already implemented” driver, and add a central one to drive it.
Thanks again.