--- Quote Start ---
You are not supposed to use two clk edges per process
--- Quote End ---
It's something similar. Exactly, the problem is, that
qs <= "0000000000"; must be mutual exclusive to the other qs[] assignments. The code should look like this:
--- Quote Start ---
if (reset = '1') then
qs <= "0000000000";
elsif (rising_edge(sclk)) then
end if;
--- Quote End ---
It is basically allowed, to have multiple clock sensitive blocks in a process, but it doesn't make sense. The code is much clearer with only one clock sensitive condition in a process.